TopPage > 演習課題 > 演習2-3 画像アイコン
まず,下記のプログラムと画像3枚を同じフォルダにダウンロードしてください.
GuiImageTest.java ダウンロード/ソースコードファイルを見る
画像ファイルの保存は,画像ファイル上で右クリックし「名前をつけて画像を保存」をクリックします.
★今までの保存先のフォルダとは異なるフォルダになっている場合がありますので,確認して保存してください.
... White.jpg
... Black.jpg
... GreenFrame.jpg
コンパイルの方法は,これまでと同じです.
このプログラムは,演習2-2のプログラムのボタンに,上記でダウンロードした画像ファイルを貼り付けたものです. (一部機能を省略しています)
このプログラムは,クリックするごとに,
緑のアイコン → 白丸つきアイコン → 黒丸つきアイコン
の順に変化していきます.
21〜24行目で,3つの画像ファイルを,ImageIcon型の変数(オブジェクト)に読み込んでいます.
//アイコンの設定 whiteIcon = new ImageIcon("White.jpg"); blackIcon = new ImageIcon("Black.jpg"); boardIcon = new ImageIcon("GreenFrame.jpg");
26〜35行目では,ボタンを5つ生成します.
//ボタンの生成 buttonArray = new JButton[5];//ボタンの配列を5個作成する[0]から[4]まで使える for(int i=0;i<5;i++){ buttonArray[i] = new JButton(boardIcon);//ボタンにアイコンを設定する c.add(buttonArray[i]);//ペインに貼り付ける buttonArray[i].setBounds(i*45,10,45,45);//ボタンの大きさと位置を設定する.(x座標,y座標,xの幅,yの幅) buttonArray[i].addMouseListener(this);//ボタンをマウスでさわったときに反応するようにする buttonArray[i].addMouseMotionListener(this);//ボタンをマウスで動かそうとしたときに反応するようにする buttonArray[i].setActionCommand(Integer.toString(i));//ボタンに配列の情報を付加する(ネットワークを介してオブジェクトを識別するため) }
続いて,クリックしたときの処理が44〜58行目に書かれています. 一部を抜粋します.
JButton theButton = (JButton)e.getComponent();//クリックしたオブジェクトを得る. String theArrayIndex = theButton.getActionCommand();//ボタンの配列の番号を取り出す Icon theIcon = theButton.getIcon();//theIconには,現在のボタンに設定されたアイコンが入る System.out.println(theIcon);//デバッグ(確認用)に,クリックしたアイコンの名前を出力する if(theIcon.equals(boardIcon)){//アイコンがboardIconと同じなら theButton.setIcon(whiteIcon);//whiteIconに設定する }else{ theButton.setIcon(blackIcon);//blackIconに設定する }
黒丸つきアイコンの状態になっているボタンをクリックすると,緑のアイコンが表示されるようにプログラムを修正してください.
Q&Aを参考にしてください.