1 :デフォルトの名無しさん:2009/12/19(土) 23:13:39
ハードウェアの高スペック化、描画アルゴリズムの変更、JavaVMの高速化に伴い、パフォーマンスの問題は改善されています。
しかしながら、"Java"というだけで未だに敬遠されるのが現状。
そんなSwingと引き続き付き合っていくみんなのスレッドです。

Java低速GUI Swing 8
http://pc12.2ch.net/test/read.cgi/tech/1227234261/
Java低速GUI Swing 7
http://pc11.2ch.net/test/read.cgi/tech/1204155623/
Java低速GUI Swing 6
http://pc11.2ch.net/test/read.cgi/tech/1190807478/
Java低速GUI Swing 5
http://pc11.2ch.net/test/read.cgi/tech/1161139809/
Java低速GUI Swing 4
http://pc8.2ch.net/test/read.cgi/tech/1140533866/
Java低速GUI Swing 3
http://pc8.2ch.net/test/read.cgi/tech/1121700954/
Java低速GUI Swing 2
http://pc8.2ch.net/test/read.cgi/tech/1095398949/
Java低速GUI Swing
http://pc5.2ch.net/test/read.cgi/tech/1062271447/l50

16 :デフォルトの名無しさん:2009/12/21(月) 22:17:54
swingについて質問
コンポーネントAをコンポーネントBにadd()し、コンポーネントCにもコンポーネントAをadd()します。
その後にBとCを表示してみると、Bがうまく表示されません。
どのようにしたら、B、CどちらにもAを表示させる事ができますか?

JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();
panel1.add(label);
panel2.add(label);
frame.add(panel1, BorderLayout.NORTH); ←表示されない
frame.add(panel2, BorderLayout.SOUTH);



198 :デフォルトの名無しさん:2010/02/28(日) 04:50:07
まじでおまえらSwingで何つくってんだ?
ゲームのマップエディタ適当にSwingで適当につくろうとして久々触ったけど
相変わらず糞だなぁ、、いつまともになるんだろこれ。。

216 :デフォルトの名無しさん:2010/03/06(土) 21:58:42
最近、日曜プログラムでSwing始めました。
仕事ではCOBOLとかC言語が多かったのでJavaはかじった程度の知識しかありません。

ところで、コンポーネントのリスナークラスとか追加するときって、無名クラス使うのが
一般的なんですか?(本とか読むとそれが多いと書いてあったので)

個人的には画面系のプログラムも作ったこともなかったので、よく分からないんですが、
コンポーネントの生成や属性の設定の中に、ロジックが入ってくる様に思えて
なんか違和感を感じるんで、今は無意味でもクラスに名前を書いて内部クラスにしてます。

でも、無名内部クラスにするが一般的なら、それになれとかないとなぁと思い質問しました。

228 :デフォルトの名無しさん:2010/03/07(日) 08:42:33
>>216
ビジネスロジックは別クラスに実装して、
無名リスナーはUIとビジネスロジックのアダプタとして実装している。
こんな感じ。

JButton b1 = new JButton("OK"):
b1.addActionListener(new ActionListener(){
  getSomeLogic().doLogic();
});

getHogeLogic()とdoLogic()の中身は想像で補ってくれ。

ビジネスロジックは、UIと粗結合であるべき、フレームワーク非依存であるべき、
というのが信条なので、SwingのAPIが混ざったクラスにビジネスロジックを書きたくない。
イベント処理にXXXListenerが必要というのはSwingの都合でしかないので、
そういう事情はSwingのUIクラスの中だけで隠蔽したい。

以上のような理由から、上記の作り方をしている。

次の課題として、UIオブジェクトとビジネスロジックオブジェクトのバインディングについて
考える必要があるけど、
そこは、ハードコーディングするなり、上位のオブジェクトからsetしてもらうなり、
DIコンテナでインジェクションするなり、好きな方法をどうぞ。
お薦めはDIコンテナだが、不慣れなら他の方法でもいい。

252 :デフォルトの名無しさん:2010/03/11(木) 16:34:54
XML で保存出来るのに今時 POI とかないわ。

253 :デフォルトの名無しさん:2010/03/11(木) 17:17:17
JEditorPane#getPrintableでRTF文書の印刷とか考えてるならやめとけー。
まずは簡単なWORD文書をディスプレイに描画させてみて、満足いく結果が得られるのか早期に検討すべし。

たぶん Aspose.Words for Java みたいな有料ライブラリが必要になるだろうよ。

>252
XMLなんか差し込み印刷したってしょうがないだろ

254 :デフォルトの名無しさん:2010/03/11(木) 17:25:41
>>253
Word XML (WordML) 形式の話をしてるんだが、まだ Office が XML で連携できてるって
気付いてない奴って多いんだよな。おまえみたいな。

344 :デフォルトの名無しさん:2010/03/27(土) 09:19:03
俺は、この前このスレじゃないがソースうpしたけど、
ソースについて何の評価も貰えなかった・・・

そんな俺は腐ったミカンですか?

347 :デフォルトの名無しさん:2010/03/27(土) 10:29:57
ソースをうぷったのにコメントを戴くことができなかった7つの理由

1.閲覧者のレベルが低かった
2.閲覧者の得意分野が違っていた(学校、仕事、趣味、ゲームetc.)
3.問題のある部分は見当たらなかった
4.ソースが巨大すぎて読む気が失せる
5.あまりにも低レベルすぎて指摘のしようがない
6.誰も見てくれなかった
7.その他

>>344
もう1度ここでうぷってみたら?有能者が応えてくれるんじゃないの

370 :334:2010/03/27(土) 21:56:30
別にこまってないし、ソースupする気なんてないよ
遅い理由はJTableのレンダラにJLabelを使っているからなんだけど手を抜こうとしたらこれが都合よかったのでそうしてるだけだし。

にしても、あとはSwingのせい。
DataGridView@C#でやったらどんだけ高速だったことか。

見た目がいびつなのは、レイアウトマネージャーの動作がキチガイだから。
SWTのGridLayoutが神レイアウトだと思うんだけど、これのSwing版発見したのでつかってみて

ttp://code.google.com/p/uface/issues/detail?id=8

掲示板添付のzipが使えた。
正式にはどこで公開されているのか知らん。英語わからんし。


393 :デフォルトの名無しさん:2010/03/30(火) 00:33:05
>>370
1000x1000程度のJTableなら、全セルにイメージ貼り付けても、
スカスカ動くがな。
大方、全セルにJLabelをnewしてつっこんだとかだろ。


422 :デフォルトの名無しさん:2010/04/13(火) 13:09:55
window自体に最優先のキーイベントを登録したいのですが、
要は、どのパネル、どのコンポーネントを開いていても呼ばれるイベントです。
WindowにWHEN_IN_FOCUSED_WINDOWのイベントをgetActionMap().put(action, action)するみたいな感じです。

424 :デフォルトの名無しさん:2010/04/15(木) 10:17:51
>>422
KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventPostProcessor(new KeyEventPostProcessor() {
public boolean postProcessKeyEvent(KeyEvent e) {
if (e.getID() == KeyEvent.KEY_PRESSED)
System.out.println(e);
return false;
}
});

このサンプルコードのようにすると出来るようです。
あとはKEY_PRESSEDの所と、System.out.println(e)の所を適切に変えればOKです。
1日掛けて調べました。。。

もし宜しければ、私のブログの応援クリックをしてもらえませんか?
http://study-blog.jugem.jp

495 :デフォルトの名無しさん:2010/08/02(月) 11:56:19
テキストフィールドにフォーカスが当たった時に背景と文字の色を変えたいと思っています。

テキストフィールドのフォーカスゲインとフォーカスロストのイベントで色指定すればできたのですが
複数のテキストフィールドに対して統一的な設定をする方法があったら教えてもらえないでしょうか。
例えば100個のテキストフィールドがある時にゲインとロストで合わせて200個のメソッドを書かずにすませたいんです。
よろしくお願いします。

496 :デフォルトの名無しさん:2010/08/02(月) 13:28:46
>>495
どう考えてもメソッド書くのは2個でいいだろ…

497 :デフォルトの名無しさん:2010/08/02(月) 15:09:29
>>496
レスありがとう。
2個ですませられるやり方が知りたいです。

自分の知ってるやり方だとテキストフィールドのインスタンスにリスナー登録するから
インスタンスの数に比例してメソッドの数が増えるんです。

530 :デフォルトの名無しさん:2010/10/01(金) 14:37:51
WindowBuilder Pro
http://code.google.com/intl/ja/webtoolkit/tools/wbpro/index.html

googleがどっかの会社を買収して、そこが販売していたツールを
無料提供してくれたらしい

532 :デフォルトの名無しさん:2010/10/01(金) 23:50:41
>>530じゃないけど使ってみたよ。
サクサク動くし、生成されたコードがきれい(変なタグが入ったりしない)で、思い通りにポトペタすることができたよ。
SWTでだけど、レイアウトを間違えてAbsoluteLayoutでやってて、途中でFormLayoutにしたらまったく見た目変わらずコンバートしてくれたのには驚いたw
とにかく細部まで作りこまれてて完成度が高いと思った。
まだ今のところは気になる点はないね。

570 :デフォルトの名無しさん:2010/10/11(月) 21:53:39
本買わなくてもJavaTutorialだけでいいような

604 :デフォルトの名無しさん:2010/11/10(水) 23:13:23
質問です。
現在JFrame上からファイルをPC上にドラッグ&ドロップでコピーを行うプログラムを組んでいます。
しかしファイル名が英字なら動作するのですが日本語ファイル名だとコピーが行われません。
特に例外が発生しているわけでもないので原因もよく分かりません・・・。
ファイルパスをSJISでのエンコードしてからFileを生成したりと色々試してはみたのですがだめでした。
どなたかこのような現象を解決した方はおられますか?

606 :デフォルトの名無しさん:2010/11/10(水) 23:44:51
>>604
JLabel に自作の TransferHandlerあてこんで、Transferable 実装して、
javaFileListFlavor で java.util.List(ArrayList) 渡すっていう意味でいいのかな。
今そう作って試してみたら俺の環境ではできた。
"E:\\temp\\アドレス帳.txt" ファイルを、
"E:\\temp" 以外にコピーできる、Excel で開ける、Word に貼り付けられる。など。
XP と JRE6、Windows2000 と JRE5、Windows2000 と JDK1.4。

できちゃった以上俺には解決できないかもしれないけど、
OSとJREが何か書いてみたら? あと必要だと思ったらソースも。

636 :デフォルトの名無しさん:2010/11/26(金) 22:08:54
頻出の質問かもしれませんが、うまく調べられませんでした。

環境はJRE6です。
JTableのヘッダについて、以下の順序で作ったテーブルをスクロール
すると、新しく表示される部分が正しく描画されません。
 たとえば右にスクロールすると、スクロール開始前の右端の数ピクセルが
繰り返し描画されます(右端にFと描画されている時はFFFFFFFFFが続きます)
スクロールを戻すと、最初に描画されていた範囲は正しい描画のままです。
 テーブル本体は正しく描画されています。

1.new JTable()
2. setModel(new MyModel())を使ってモデルをセット。
(モデルはAbstractTableModelを継承させていて、
 列数(20)、行数(20)、返す値("nulpo")を定数で返す様に定義しています。)
3.setAutoResizeModeでAUTO_RESIZE_OFFをセット。
4. JScrollPaneにsetViewportViewでセット
5. JScrollPaneをフレームにセット
6. jTable.getTableHeader().setPreferredSize(new Dimension(100,30))


すいません、もう一つ質問があります。
JTableにセルエディタとしてJListをそのまま使った場合、
セルの表示域までしかJListが表示されなくて使えませんでした。
この場合は、どのようにすれば正しく実装できるのでしょうか?
Ctrlで複数選択できる機能が付いたコンボボックスの様な動作を期待しています。
JComboboxじゃなくJListを使おと思った理由は複数選択がしたかったからです。
JCombobox->AccesibleContext->JList->setSelectionMode
という方法も試してみましたが、単一選択しかできませんでした。

以上です。長文失礼しました。

687 :デフォルトの名無しさん:2011/02/19(土) 12:27:43
Swingって最初はつっかいずれーなーと思ってたけど
慣れてくるとなかなかどーして
結構気に入った

692 :デフォルトの名無しさん:2011/02/19(土) 16:41:45
>>687
挫折する人が多いのにどこが気に入ったの?

717 :デフォルトの名無しさん:2011/03/03(木) 21:46:26.35
fillRectってJavadoc見ると塗りつぶしってあるのでエアブラシのような拡散して描画するって
感じにならないことありませんか??


742 :デフォルトの名無しさん:2011/03/23(水) 02:21:13.82
>自前でモデルオブジェクトとCompornentをバインドする
ああ、だからこういったのか。
java beansはたしかにMVCのMに相当するけどModelに相当することをやるための仕様じゃなくて
再利用可能なコンポーネントを定義して(主にRAD環境から)使い回すための仕様だから普通に
SwingのMVCに従って「ウインドウのタイトルにbeanが持つ画像のファイル名をだしたり...」を実装したほうが良いと思うよ。
java beansのしがらみに縛られる必要性はないんでしょ?

http://hibari.2ch.net/test/read.cgi/tech/1261232019/l50人気ブログランキングへ