我正在編寫一個程序,該程序具有正方形網格,當您單擊它時,它會將顏色從黑色更改爲紅色。我正在寫第一個方塊的if語句,並且不讓我用圖形做任何事情。我如何1)改變顏色爲紅色,2)在同一個地方畫一個新的方塊,3)爲什麼不像MouseHandler
類聲明那樣?無法將圖形應用於if語句
import java.awt.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class toggle extends JPanel{
public void paintComponent(Graphics g){
super.paintComponents(g);
g.fillRect(0,0,20,20);
g.fillRect(21,0,20,20);
g.fillRect(42,0,20,20);
g.fillRect(63,0,20,20);
g.fillRect(84,0,20,20);
g.fillRect(105,0,20,20);
g.fillRect(126,0,20,20);
g.fillRect(147,0,20,20);
g.fillRect(168,0,20,20);
g.fillRect(189,0,20,20);
g.fillRect(190,0,20,20);
//
g.fillRect(0,21,20,20);
g.fillRect(21,21,20,20);
g.fillRect(42,21,20,20);
g.fillRect(63,21,20,20);
g.fillRect(84,21,20,20);
g.fillRect(105,21,20,20);
g.fillRect(126,21,20,20);
g.fillRect(147,21,20,20);
g.fillRect(168,21,20,20);
g.fillRect(189,21,20,20);
g.fillRect(190,21,20,20);
//
g.fillRect(0,42,20,20);
g.fillRect(21,42,20,20);
g.fillRect(42,42,20,20);
g.fillRect(63,42,20,20);
g.fillRect(84,42,20,20);
g.fillRect(105,42,20,20);
g.fillRect(126,42,20,20);
g.fillRect(147,42,20,20);
g.fillRect(168,42,20,20);
g.fillRect(189,42,20,20);
g.fillRect(190,42,20,20);
//
g.fillRect(0,63,20,20);
g.fillRect(21,63,20,20);
g.fillRect(42,63,20,20);
g.fillRect(63,63,20,20);
g.fillRect(84,63,20,20);
g.fillRect(105,63,20,20);
g.fillRect(126,63,20,20);
g.fillRect(147,63,20,20);
g.fillRect(168,63,20,20);
g.fillRect(189,63,20,20);
g.fillRect(190,63,20,20);
//
g.fillRect(0,84,20,20);
g.fillRect(21,84,20,20);
g.fillRect(42,84,20,20);
g.fillRect(63,84,20,20);
g.fillRect(84,84,20,20);
g.fillRect(105,84,20,20);
g.fillRect(126,84,20,20);
g.fillRect(147,84,20,20);
g.fillRect(168,84,20,20);
g.fillRect(189,84,20,20);
g.fillRect(190,84,20,20);
//
g.fillRect(0,105,20,20);
g.fillRect(21,105,20,20);
g.fillRect(42,105,20,20);
g.fillRect(63,105,20,20);
g.fillRect(84,105,20,20);
g.fillRect(105,105,20,20);
g.fillRect(126,105,20,20);
g.fillRect(147,105,20,20);
g.fillRect(168,105,20,20);
g.fillRect(189,105,20,20);
g.fillRect(190,105,20,20);
//
g.fillRect(0,126,20,20);
g.fillRect(21,126,20,20);
g.fillRect(42,126,20,20);
g.fillRect(63,126,20,20);
g.fillRect(84,126,20,20);
g.fillRect(105,126,20,20);
g.fillRect(126,126,20,20);
g.fillRect(147,126,20,20);
g.fillRect(168,126,20,20);
g.fillRect(189,126,20,20);
g.fillRect(190,126,20,20);
//
g.fillRect(0,147,20,20);
g.fillRect(21,147,20,20);
g.fillRect(42,147,20,20);
g.fillRect(63,147,20,20);
g.fillRect(84,147,20,20);
g.fillRect(105,147,20,20);
g.fillRect(126,147,20,20);
g.fillRect(147,147,20,20);
g.fillRect(168,147,20,20);
g.fillRect(189,147,20,20);
g.fillRect(190,147,20,20);
//
g.fillRect(0,168,20,20);
g.fillRect(21,168,20,20);
g.fillRect(42,168,20,20);
g.fillRect(63,168,20,20);
g.fillRect(84,168,20,20);
g.fillRect(105,168,20,20);
g.fillRect(126,168,20,20);
g.fillRect(147,168,20,20);
g.fillRect(168,168,20,20);
g.fillRect(189,168,20,20);
g.fillRect(190,168,20,20);
//
g.fillRect(0,189,20,20);
g.fillRect(21,189,20,20);
g.fillRect(42,189,20,20);
g.fillRect(63,189,20,20);
g.fillRect(84,189,20,20);
g.fillRect(105,189,20,20);
g.fillRect(126,189,20,20);
g.fillRect(147,189,20,20);
g.fillRect(168,189,20,20);
g.fillRect(189,189,20,20);
g.fillRect(190,189,20,20);
}
public toggle(){
super();
JFrame frame=new JFrame();
frame.setTitle("toggle");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(this);
frame.setSize(226, 247);
frame.setVisible(true);
MouseHandler hand=new MouseHandler();
addMouseListener(hand);
}
public class MouseHandler implements MouseListener{
public void MousePressed (MouseEvent e){
if(e.getX()<20&&e.getX()>0&&e.getY()<20&&e.getY()>0){
}
}
}
public static void main (String[]args){
new toggle();
}
}
非常感謝,這確實有幫助,但我仍然沒有得到如何解決MouseListener問題。 – tussya
我編輯了我的答案,以便更清楚地包含這兩個選項。 – lhballoti
好吧,偉大的eveything工程,除了現在認爲布爾型的「bos」總是如此,即使我沒有點擊它。我正在爲每個廣場寫if語句。這是針對第一個:if(e.getX()<20 && e.getX()> 0 && e.getY()<20 && e.getY()> 0){0} {bbb = true; }我應該改變它的工作方式? – tussya