Swing♪Swing♪Swing♪
ここは、ひよっこプログラマのブログですよ!
というわけで、たまには技術的なメモを残しておくのであった。
エントリのタイトル見て分かるとおり、Java Swingのお話。
バージョンは、1.5.0である。
JLabelの背景色がつかない
JLabelにsetBackgroundしてるのに、色がつかないよ(´・ω・`)という場合。
背景色の透明・不透明を設定する関数setOpaqueで設定が必要。
setOpaque(true)をすると、不透明になって設定した色が塗られる。
JFrameのcontentPaneにaddしたJPanelの大きさが変わらない
JFrameのcontentPaneにaddしたJPanelの大きさが変わらない(´・ω・`)
setSizeしても、setPreferredSizeしても、setBoundsしても変わらない(´・ω・`)
もちろん、setLayout(null)なんだけどなぁ…。位置もサイズも指定している(´・ω・`)
そんなときの対処法。
とりあえず、contentPaneからremoveする。
そして、新しいJPanel作ってaddする。
ちゃんと、JFrameをsetVisible(true)する。←大事っぽい
setVisible(true)しておかないと、新しいJPanelが反映されないぽい?
removeしている時点でVisibleがfalseになってるのか?(後で調べる)
とにかく、setVisible(true)しないといかん。
対処法な感じなので、何故そうなるのかがわかっていない。ソース見ればわかるかな。(後で見る)
もしもご存知の方は是非ご一報を。
3件のコメント »
TrackBack URL :
JFrame f = new JFrame();
f.getContentPane().setLayout(null);
JPanel p = new JPanel();
p.setOpaque(true);
p.setSize(100,100);
p.setBackground(Color.RED);
f.getContentPane().add(p);
f.setVisible(true);
でできましたよ?
1. revalidateしてみては?
2. どのスレッドやってるか確認して、イベントディスパッチスレッドじゃなければinvokeLaterでやってみては?
コメント by hide-t — 2009年6月30日 @ 20:32
コメントありがとうございます! そして、説明不足でごめんなさい。
hide-tさんが言うところはOKなのですが、
f.setVisible(true);
の後に
p.setSize(200, 200);
しても、変化がないなーってことだったのです。わかりにくてすみません。
教えていただいた1と2についてよくわかってないので、調べてみます><
コメント by maccha — 2009年7月2日 @ 00:38
直感ではダブルバッファとレイアウトマネージャが無いせいではないかと。
コメント by hide-t — 2009年7月4日 @ 13:40