== クリック時の処理(2) == つぎのようなプログラムを書きます。 マウスのボタンがどのピースの位置で押されたか判定し、 そのピースの位置を四角く塗りつぶします。 数字6のところで押されたらこのように表示される。 . {{attachment:setumei2b.png}} マウスが押されたときの処理はmousePressedに書き、 表示の処理はpaintComponentに書きます。 処理に必要なデータは属性値(インスタンス変数の値)として記憶します。 クリックされた位置により cx, cy の値を次のように設定することにします。 . {{attachment:setumei2a.png}} 次に、paintComponent内でこの値を使って 長方形を描きます。 数字6のところで押されたときは . cx = 2 . cy = 1 となり、上の実行例のようになります。 ---- === 演習 === ?の2箇所を書き、プログラムを完成させなさい。 {{{#!java import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Game4 extends JPanel implements MouseListener { Image img; int cx, cy; Game4() { ImageIcon ii = new ImageIcon("game0.png"); img = ii.getImage(); addMouseListener(this); } public void paintComponent(Graphics g) { g.drawImage(img, 0,0, this); g.setColor(Color.blue); g.fillRect(cx*100, cy*100, 100, 100); } public void mousePressed(MouseEvent e) { int x, y; x = e.getX(); y = e.getY(); cx = ? ; cy = ? ; repaint(); } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } public void mouseReleased(MouseEvent e) { } public void mouseClicked(MouseEvent e) { } public static void main(String[] args) { JFrame f; f = new JFrame(); f.setVisible(true); f.setTitle("15Game"); f.setSize(420, 450); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.add( new Game4() ); } } }}}