1 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 23:13:39 ] ハードウェアの高スペック化、描画アルゴリズムの変更、JavaVMの高速化に伴い、パフォーマンスの問題は改善されています。 しかしながら、"Java"というだけで未だに敬遠されるのが現状。 そんなSwingと引き続き付き合っていくみんなのスレッドです。 Java低速GUI Swing 8 pc12.2ch.net/test/read.cgi/tech/1227234261/ Java低速GUI Swing 7 pc11.2ch.net/test/read.cgi/tech/1204155623/ Java低速GUI Swing 6 pc11.2ch.net/test/read.cgi/tech/1190807478/ Java低速GUI Swing 5 pc11.2ch.net/test/read.cgi/tech/1161139809/ Java低速GUI Swing 4 pc8.2ch.net/test/read.cgi/tech/1140533866/ Java低速GUI Swing 3 pc8.2ch.net/test/read.cgi/tech/1121700954/ Java低速GUI Swing 2 pc8.2ch.net/test/read.cgi/tech/1095398949/ Java低速GUI Swing pc5.2ch.net/test/read.cgi/tech/1062271447/l50
449 名前:デフォルトの名無しさん mailto:sage [2010/05/14(金) 01:31:59 ] てっきりイベントがらみで駄目なのかと思った
450 名前:デフォルトの名無しさん mailto:sage [2010/05/14(金) 10:36:09 ] >>449 それもあるから親を1つしか持てないようになってるんだろう
451 名前:デフォルトの名無しさん mailto:sage [2010/05/25(火) 10:07:14 ] ルックアンドフィールは、複数同時には使えない? JFrame 2つつくって、片方は、javax.swing.plaf.metal.MetalLookAndFeel もう片方は、UIManager.getSystemLookAndFeelClassName() でとってきたやつを 適用する、みたいなことはできないようになってるってことでいい?
452 名前:デフォルトの名無しさん mailto:sage [2010/05/25(火) 10:14:23 ] JFrame を表示する前に都度 UIManager#setLookAndFeel()、 SwingUtilities#updateComponentTreeUI() で指定してやれば 見た目は別々になるんじゃないの。全くお勧めは出来ないが。
453 名前:デフォルトの名無しさん mailto:sage [2010/05/25(火) 10:28:24 ] MetalLookAndFeelで1.1や1.2のころの昔の紫色のUIに変更するにはどうするんですか?
454 名前:デフォルトの名無しさん mailto:sage [2010/05/25(火) 10:32:22 ] JFrame.setDefaultLookAndFeelDecorated(true); JDialog.setDefaultLookAndFeelDecorated(true); の事か?
455 名前:デフォルトの名無しさん mailto:sage [2010/05/25(火) 18:33:26 ] >>440 www.javakb.com/Uwe/Forum.aspx/java-setup/11894/Copying-the-View-of-a-JPanel このページの2番目のサンプルコードがとても参考になると思います。 >>451 VMを2つ起動という手も・・・ないか。
456 名前:デフォルトの名無しさん mailto:sage [2010/05/25(火) 20:26:49 ] >>451 できるけど挙動が狂うって話があった気がする。
457 名前:デフォルトの名無しさん mailto:sage [2010/05/25(火) 20:33:23 ] >>452 >>456 基本できないよな 少なくともAPI作り手はそんなこと想定しなていようだな サンキュー
458 名前:デフォルトの名無しさん mailto:sage [2010/05/25(火) 23:53:25 ] >>453 LookAndFeel laf = new javax.swing.plaf.metal.MetalLookAndFeel(); MetalTheme theme = new javax.swing.plaf.metal.DefaultMetalTheme(); MetalLookAndFeel.setCurrentTheme(theme); UIManager.setLookAndFeel(laf); 多分これのことかな?
459 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 00:19:25 ] >>443 あたりに関連して、 frame1 : JFrame --- button1 : JButton frame2 : JFrame --- button2 : JButton みたいに、なってて、button1とbutton2が同じモデル buttonModel0をsetModelされてるとき、 frame1をクローズして、frame1がGCで回収された後でも、button1は、buttonModel0からリスナ経由で 参照されてるから残る。 もちろん、button1を再利用したいときもあるけど、そのままメモリリークになりやすい。 どこかのタイミングでプログラマの責任で、button1.setModel(null)して、モデルへの参照を切るべきなんだろうけど、 なんか、定石みたいな書き方ありますかね?
460 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 00:27:38 ] >>459 frame1 のクローズイベントで切り離す。
461 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 22:28:00 ] JTable でセルをdbl clickだんどするとそのセルをエディットできますよね。 これを無効にしたいんですがどのAPIでしょうか。 それにしてもJTableは複雑ですよね・・・
462 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 22:53:53 ] 日本語でおk
463 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 23:12:24 ] JTableは本当に複雑ですけど1つのコンポネントにあれこれ機能を詰め込みすぎって感じがします。 dbl clickやF2でセルを編集できるようになりますがこれをoffにするにはどうするんですか?
464 名前:デフォルトの名無しさん mailto:sage [2010/06/06(日) 23:49:21 ] JTable.setDefaultEditor()にnullを渡しておくのはどうだろう。 本来は自作TableModelを作るべきだと思うが。
465 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 00:33:23 ] >>464 javadocみるとそれしかないかなって思ってましたけど、一番単純な方法はやはりそれでしょうね。 javaはclassの継承を中心とした言語設計なのに、swingはDIというかMVCというかプラグインというか、java langにとってswinの設計思想はまったく異質なので非常に複雑なライブラリとなっています。 愚痴を言うわけではないですが複雑な割にこの程度の機能(それもtableとして当たり前のような機能)しかないswing.tableなら、 少なくともhtml,dom,xmlやgridbag + cellの自作コンポでほとんど用が足りると思います。 javascript.prototypeのような考えならまた違ったのかもしれませんが、それをいうとあとの祭りなのでしょうね。 それと日本語のswingを扱ったHPは皆無ですね。グーグルでもこのスレがよくヒットします。
466 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 00:41:38 ] ああ、誤解を招きかねないですが、spiなら問題ないですがswingのようなui,skinableではspiや plubableじゃなくてcssや、顧客一人一人に合わせたskin(script)のようにもっと軽く設定できない (つまりskin,look,feelingについては固定の設定は存在しないという設計思想)と、UI開発者は敬遠するかなって思います。 webクリエーチャ達の髪の毛の軽さと同じく、JEditorPaneのhtmlエディタもしかりです。
467 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 05:26:11 ] >>465-466 SwingはJavaプログラマのためのライブラリです。 htmlやcssの方が得意な人のためのライブラリではありません。 SwingにhtmlやcssでUIを設定できないと文句を言うのはお門違いだと思います。
468 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 13:05:58 ] 正確に言うとjavaじゃ無くてjvmプラットのUI
469 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 15:55:54 ] xmlならsynthがある。 JEditorPaneは最初はやる気満々だったけど扱おうとするドキュメントが方言だらけで投げた。 というかここら辺のフォローはSwing labの管轄なんだが。 まあ俺々思想が強すぎて>>465 の意図がよく分からんが。
470 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 16:02:48 ] synthはswing uiに新しい機能を定義したり追加したりするものじゃないですよね・・・
471 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 16:19:01 ] swin sets 3も見てみましたけど、ただ高機能にしただけってところじゃないですかね。 それら機能の追加などカスタムなことをユーザ(開発者)が簡単にできるようにしないと汎用コンポでもないし汎用ライブラリ(javax swing)としても意味ないです。 少なくともjava,c++(qt3,qt4),dotnet,gameライブラリを当たり前のように使える開発者は時間があればそれぐらいのコンポネントは普通に作れますよ。 swing labのコンポネントはnetbeans apiに組み込んじゃったほうがいいんじゃないかと思います。 今はjavafxでしょうし、lgplのようですし、せっかく有用なコンポなのでswtと同じ感じでnetbeansを特に使う人達への特権ってことで。
472 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 16:42:55 ] ブログでやれ
473 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 11:39:06 ] キーバインドの変更だけならInputMap使うほうが素直では。
474 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 21:52:13 ] htmlしかコーディング出来ないスキルでguiやろうってのが無謀。
475 名前:デフォルトの名無しさん [2010/06/26(土) 19:50:11 ] ahe
476 名前:デフォルトの名無しさん [2010/07/02(金) 10:14:55 ] 低速だとはおもわない
477 名前:デフォルトの名無しさん mailto:sage [2010/07/02(金) 13:15:39 ] 伝統だから付いてるだけだよ。 # 「Java 高速 GUI SWT」に対する皮肉も込めて…
478 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 02:29:19 ] 教えてください。 JFrame→JDialog(モーダル)→JDialog(モーダル)の画面遷移で、 最後のJDialogをdispose()すると、最後のJDialog残像が残るんですが、(何回かやってると) dispose()した後、2番目のJDialogをrepaint()しないといけないもんですか? 実際はもうちょっと複雑で、 2番目のJDialogの中にtableがあってTableのセル内のボタンを押した時に、 3番目のJDialogが開くようになってます。 そこで、選択した物をテーブルに表示するという処理になります。 3番目のJDialogを引数無で作成すると残像は起こらないんですが、 オーナー(2番目のJDialog)を指定してJDialogを作成した場合のみ問題が発生します。
479 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 09:30:08 ] hideしてからdispose
480 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 18:04:51 ] 1.5以降ではhide()は推奨されないメソッドになっているため、 JavaDocの通り、setVisible(false)をしてからとか、 windowクラスのtoBack()をしてからdispose()をするなど、 色々と試してみたんですがうまくいきません。(モーダルなのでtoBack()は効くかもわかりませんが(汗)) あとは、windowsの問題かと思い、VM引数のnoddraw=trueでやってみたりもしたんですがダメでした・・ 奥が深いですね・・・
481 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 18:19:52 ] それが再現出来るような説明を付けてバグ報告
482 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 23:55:02 ] 3番目のJDialogをEventQueue.invokeAndWait()経由で開いてみるのはどうだろう。
483 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 18:14:32 ] 先回りエスパーでinvokeLaterと修正してみるテスト
484 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 23:58:22 ] SwingUtilsですね 確認してみます。 色々と助言ありがとうございます。 解せないのは、 オーナーを指定した場合と、していない場合の動作ですが まだわからないことが多いので勉強してみます。
485 名前:デフォルトの名無しさん mailto:sage [2010/07/09(金) 12:48:41 ] Apache pivotのWTKって、Swingの補完に使えんのかな。