矩形不显示(油漆)java



我已经这样做过很多次了,但我还是卡住了。我查了我以前的项目,找不到答案。矩形应该显示为400,400,大小为100,100(右下角)。当开始按钮被按下时,我想让它显示矩形。提前感谢!

! !:这里有多个类,我只是没有发布它们,因为它们没有使用,如果它们有,我会发布它们。

class MazeRunner extends JFrame implements ActionListener, MouseMotionListener {
JButton b1;
int  pkp = 0;
MazeRunner(){
b1= new JButton("Start");
add(b1);
b1.addActionListener(this);
b1.setBounds(10,10,50,50);
addMouseMotionListener(this);
setTitle("Maze Runner");
setLayout(null);
setSize(500, 500);
setResizable(false);
setVisible(true);
}
public static void main(String[] args) {
new MazeRunner();  
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() == b1){ 
remove(b1);
pkp++;
validate();
repaint();
}
}
@Override
public void mouseDragged(MouseEvent e) {
}
@Override
public void mouseMoved(MouseEvent e) {
if (pkp == 1) {
if(e.getX() >= 400 && e.getX() <= 500 && e.getY() >= 400 && e.getY() <= 500) {
dispose();
}
}
}
protected void paintComponent(Graphics g) {
draw(g);
}
private void draw(Graphics g) {
if(pkp == 1) {
g.setColor(Color.BLACK);
g.fillRect(400, 400, 100, 100);
}
repaint();
}
}

首先,方法paintComponent()缺少它的构造函数所以它应该看起来像

public void paintComponent(Graphics g){
super.paintComponent(g);
draw(g);
}

其次,我不确定Graphics g对象是否有一个名为"fillRect"所以我建议你将它转换为类型为Graphics2D的对象,所以在这种情况下,它将是:

public void draw(Graphics g){
Graphics2D g2 = (Graphics2D) g;
if(pkp == 1) {
g2.setColor(Color.BLACK);
g2.fillRect(400, 400, 100, 100);
}
repaint();
}

最新更新