クリック時の処理(2)

つぎのようなプログラムを書きます。

マウスのボタンがどのピースの位置で押されたか判定し、 そのピースの位置を四角く塗りつぶします。

数字６のところで押されたらこのように表示される。

マウスが押されたときの処理はmousePressedに書き、 表示の処理はpaintComponentに書きます。

処理に必要なデータは属性値(インスタンス変数の値)として記憶します。

クリックされた位置により cx, cy の値を次のように設定することにします。

次に、paintComponent内でこの値を使って 長方形を描きます。

数字６のところで押されたときは

cx = 2

cy = 1

となり、上の実行例のようになります。

演習

？の２箇所を書き、プログラムを完成させなさい。

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() );
}
}