前提・実現したいこと
クリックをすることで格子内を赤くぬりつぶしたいです。
ただ、クリックする前(=画面を一番最初に表示する際)は赤いブロックはない状態にしたいのですが表示されてしまいます…
※アプレットは現在廃止されている機能ですが、現在所属している団体での学習に使用しています。(教材未更新のため)
発生している問題・エラーメッセージ
クリック前に赤いブロックが表示されてしまう。
該当のソースコード
java
1package study.tetris; 2 3import java.applet.Applet; 4import java.awt.BasicStroke; 5import java.awt.Color; 6import java.awt.Graphics; 7import java.awt.Graphics2D; 8import java.awt.event.MouseEvent; 9import java.awt.event.MouseListener; 10 11public class step7 extends Applet implements MouseListener{ 12 public void paint(Graphics g) { 13 g.setColor(Color.black);//黒色 14 15 Graphics2D g2 =(Graphics2D)g;//太線 16 BasicStroke bs = new BasicStroke(5); 17 g2.setStroke(bs); 18 19 for(int x=0;x<22;x++) { 20 for(int y=0;y<13;y++) { 21 g.drawLine(0, x*30, 30*12, x*30);//方眼縦 22 g.drawLine(y*30, 0, y*30, 30*21);//方眼横 23 } 24 } 25 g.setColor(Color.red);//クリック赤 26 g.fillRect(a+1, b+1, 27, 27);//塗りつぶし 27 } 28 29 public void init() { 30 addMouseListener(this);//イベント起動 31 } 32 int a = -1; 33 int b = -1; 34 public void mouseClicked(MouseEvent e){ 35 java.awt.Point point = e.getPoint();//マウスクリックイベント 36 a = (point.x/30)*30; 37 b = (point.y/30)*30; 38 repaint(); 39 } 40 41 public void mousePressed(MouseEvent e) { 42 } 43 public void mouseReleased(MouseEvent e) { 44 } 45 public void mouseEntered(MouseEvent e) { 46 } 47 public void mouseExited(MouseEvent e) { 48 } 49} 50
試したこと
変数a,bの初期値に注目して考えましたがいまいち解決には繋がりませんでした。
どなたかお力添えをお願いいたします。
補足情報(FW/ツールのバージョンなど)
java1.8.0
Eclipse_2019-06
回答2件
あなたの回答
tips
プレビュー