Java 无法将图形应用于if语句

Java 无法将图形应用于if语句,java,graphics,if-statement,Java,Graphics,If Statement,我正在写一个程序,它有一个方格,当你点击一个方格时,它的颜色会从黑色变为红色。我正在为第一个正方形编写if语句,它不允许我对图形做任何事情。如何1)将颜色更改为红色,2)在同一位置绘制一个新正方形,以及3)为什么不像MouseHandler类声明 import java.awt.*; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.util.*; public class toggle e

我正在写一个程序,它有一个方格,当你点击一个方格时,它的颜色会从黑色变为红色。我正在为第一个正方形编写if语句,它不允许我对图形做任何事情。如何1)将颜色更改为红色,2)在同一位置绘制一个新正方形,以及3)为什么不像
MouseHandler
类声明

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


}
import java.awt.*;
导入javax.swing.*;
导入java.awt.*;
导入java.awt.event.*;
导入java.util.*;
公共类切换扩展了JPanel{
公共组件(图形g){
超级组件(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(0105,20,20);
g、 fillRect(21105,20,20);
g、 fillRect(42105,20,20);
g、 fillRect(63105,20,20);
g、 fillRect(84105,20,20);
g、 fillRect(105105,20,20);
g、 fillRect(126105,20,20);
g、 fillRect(147105,20,20);
g、 fillRect(168105,20,20);
g、 fillRect(189105,20,20);
g、 fillRect(190105,20,20);
//
g、 fillRect(0126,20,20);
g、 fillRect(21126,20,20);
g、 fillRect(42126,20,20);
g、 fillRect(63126,20,20);
g、 fillRect(84126,20,20);
g、 fillRect(105126,20,20);
g、 fillRect(126126,20,20);
g、 fillRect(147126,20,20);
g、 fillRect(168126,20,20);
g、 fillRect(189126,20,20);
g、 fillRect(190126,20,20);
//
g、 fillRect(0147,20,20);
g、 fillRect(21147,20,20);
g、 fillRect(42147,20,20);
g、 fillRect(63147,20,20);
g、 fillRect(84147,20,20);
g、 fillRect(105147,20,20);
g、 fillRect(126147,20,20);
g、 fillRect(147147,20,20);
g、 fillRect(168147,20,20);
g、 fillRect(189147,20,20);
g、 fillRect(190147,20,20);
//
g、 fillRect(0168,20,20);
g、 fillRect(21168,20,20);
g、 fillRect(42168,20,20);
g、 fillRect(63168,20,20);
g、 fillRect(84168,20,20);
g、 fillRect(105168,20,20);
g、 fillRect(126168,20,20);
g、 fillRect(147168,20,20);
g、 fillRect(168168,20,20);
g、 fillRect(189168,20,20);
g、 fillRect(190168,20,20);
//
g、 fillRect(0189,20,20);
g、 fillRect(21189,20,20);
g、 fillRect(42189,20,20);
g、 fillRect(63189,20,20);
g、 fillRect(84189,20,20);
g、 fillRect(105189,20,20);
g、 fillRect(126189,20,20);
g、 fillRect(147189,20,20);
g、 fillRect(168189,20,20);
g、 fillRect(189189,20,20);
g、 fillRect(190189,20,20);
}
公共切换(){
超级();
JFrame=新JFrame();
frame.setTitle(“切换”);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
框架。添加(此);
帧设置大小(226247);
frame.setVisible(true);
鼠标手柄手=新的鼠标手柄();
addMouseListener(手);
}
公共类MouseHandler实现MouseListener{
公共无效鼠标按下(MouseEvent e){
if(e.getX()0和&e.getY()0){
}
}
}
公共静态void main(字符串[]args){
新切换();
}
}
1和2)例如,您需要在
布尔[][]
字段中保留每个方块的状态,该字段将显示网格中的每个方块是否被单击。在
paintComponent
方法中,检查每个方块的状态并调用
g.setColor
,相应地传递
Color.BLACK
Color.RED
作为参数

3) 您需要为
MouseListener
接口实现所有方法:

public class MouseHandler implements MouseListener {
    public void mousePressed( MouseEvent e ) {
        // your logic here
    }

    public void mouseReleased( MouseEvent e ) {
        // leave method empty, since you don't need to listen to this event
    }

    // Same as above for mouseClicked, mouseEntered, mouseExited
}
或者扩展
MouseAdapter
类并覆盖
mousePressed
,如果您不关心其他
MouseListener
事件:

public class MouseHandler extends MouseAdapter {
    public void mousePressed( MouseEvent e ) {
        // your logic here
    }

    // No need to override the other methods, since
    // MouseAdapter already has empty implementations for them
}
此外,您正在实现的方法的正确名称是“鼠标按下”(注意小写字母m)。

1和2)您需要在一个
布尔[][][]
字段中保持每个方块的状态,例如,它会告诉您网格中的每个方块是否被单击。在您的
paintComponent