08/05/13 15:58:22
>>858
別領域に表示でなくチェックボックスの画像として表示するのね。その場合でもあまり難しく考えず、
> 画像の変更のタイミングはメッセージの変更と同じところにsetIconを記述すればいいと思う。
って書いたように、itemStateChanged内でメッセージを変えるようにIconも変えればいいんじゃないかと思う。
URLリンク(sourcepost.sytes.net)
かなり適当だけどこれは最初は画像なしで、itemStateChangedが呼ばれるタイミングでIconを設定したり消したりして、
それに合わせてpackでウインドウサイズも変えるようにしている。
ウインドウサイズがころころ変わるのが嫌だったら、
鳥の画像サイズに合わせて空白(緑色?)のダミー画像をIconに設定しておき、
itemStateChanged内でIconを消す(setIcon(null))ところは、ダミーを再設定するようにすればいいと思う。
それと、>>858のコードで、
> check1 = new JCheckBox("モリバト", false);
> check1. setBackground(Color.green);
> check1.addItemListener(this);
> JCheckBox check1 = new JCheckBox("モリバト", new ImageIcon("./images/bird1.jpg"), true);
...
> p.add(check1);
ってしているところがあるけれど、上3行のcheck1はインスタンス変数のcheck1で、
そのあとの新しくnewしているcheck1はローカル変数なので別物になっている。
JPanelにaddして表示いるものはリスナを設定したり背景色を変えたものと異なるので挙動が思ったようにならない。
フィールドとローカルとで同じ名前の別の変数を定義できるので注意。