Я учусь в настоящее время Java и ради интереса я решил попробовать сделать простую программу рисования, используя то, что я знаю. В настоящее время у меня есть программа, которая, когда пользователь нажимает на кнопку мыши, будет следовать ряду прямоугольников, куда направляется их мышь. В настоящее время я пытаюсь добавить функцию, которая, когда пользователь нажимает пробел, в определенном месте появится квадрат. Пока мышечная часть программы работает как положено, независимо от того, что я пытаюсь сделать, пробел никогда не приведет к появлению прямоугольника в любом месте экрана. Я потратил много времени, пытаясь понять это, и до сих пор не имею ни малейшего понятия. Ниже приведен метод, в котором все это происходит. Может ли кто-нибудь помочь мне понять, что я делаю неправильно, я чувствую, что это очевидно, и я слишком неопытен, чтобы это увидеть. Спасибо!
private Timer timer;
private boolean startPaint = false;
private int restart = 1;
private int x;
private int y;
//=======Public Methods=======
//=======Public Constructor(s)
public PaintCanvas()
{
addMouseMotionListener(this);
setFocusable(true);
setFocusTraversalKeysEnabled(false);
timer = new Timer(1, this);
timer.start();
}
//=======Other Public Methods=======
public void paint(Graphics g)
{
if(restart == 0)
{
clearCanvas(g);
}
g.setColor(Color.black);
g.fillRect(x, y, 10, 10);
g.dispose();
}
public void clearCanvas(Graphics g)
{
g.setColor(Color.green);
g.fillRect(24, 24, 100, 100);
g.dispose();
}
//=======Public Methods From Interfaces=======
//ActionListener
@Override
public void actionPerformed(ActionEvent e)
{
// TODO Auto-generated method stub
timer.start();
if(startPaint)
{
repaint();
restart++;
}
}
//MouseMotionListener
@Override
public void mouseDragged(MouseEvent e)
{
// TODO Auto-generated method stub
startPaint = true;
x = e.getX();
y = e.getY();
if(startPaint)
System.out.println(x + "," + y);
}
@Override
public void mouseMoved(MouseEvent e)
{
// TODO Auto-generated method stub
startPaint = false;
}
//KeyListener
@Override
public void keyTyped(KeyEvent e)
{
// TODO Auto-generated method stub
}
@Override
public void keyPressed(KeyEvent e)
{
if(e.getKeyCode() == KeyEvent.VK_SPACE)
{
restart = 0;
repaint();
}
}
@Override
public void keyReleased(KeyEvent e)
{
// TODO Auto-generated method stub
}
}