welcome: please sign in
location: "クリック時の処理(2)"の差分
3と4のリビジョン間の差分
2012-01-10 12:43:53時点のリビジョン3
サイズ: 1849
編集者: masahiko
コメント:
2012-01-10 12:46:39時点のリビジョン4
サイズ: 2033
編集者: masahiko
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 3: 行 3:

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

数字6のところで押されたときは
 . cx = 2
 . cy = 1
となり、上の実行例のようになります。

クリック時の処理(2)

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

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

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

  • setumei2b.png

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

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

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

  • setumei2a.png

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

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

  • cx = 2
  • cy = 1

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


演習

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

  •    1 import javax.swing.*;
       2 import java.awt.*;
       3 import java.awt.event.*;
       4 
       5 public class Game4 extends JPanel implements MouseListener
       6 {
       7         Image img;
       8         int cx, cy;
       9         
      10         Game4()
      11         {
      12                 ImageIcon ii = new ImageIcon("game0.png");
      13                 img = ii.getImage();
      14                 addMouseListener(this);
      15         }
      16         
      17         public void paintComponent(Graphics g)
      18         {
      19                 g.drawImage(img, 0,0, this);
      20                 g.setColor(Color.blue);
      21                 g.fillRect(cx*100, cy*100, 100, 100);
      22         }
      23         
      24         public void mousePressed(MouseEvent e)
      25         {
      26                 int x, y;
      27                 x = e.getX();
      28                 y = e.getY();
      29                 cx = ? ;
      30                 cy = ? ;
      31                 repaint();
      32         }
      33         public void mouseEntered(MouseEvent e) { }
      34         public void mouseExited(MouseEvent e) { }
      35         public void mouseReleased(MouseEvent e) { }
      36         public void mouseClicked(MouseEvent e) { }
      37         
      38         public static void main(String[] args)
      39         {
      40                 JFrame f;
      41                 
      42                 f = new JFrame();
      43                 f.setVisible(true);
      44                 f.setTitle("15Game");
      45                 f.setSize(420, 450);
      46                 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      47                 f.add( new Game4() );
      48         }
      49 }
    

クリック時の処理(2) (最終更新日時 2012-03-27 04:49:09 更新者 masahiko)