我正在尝试在ActionListener中使用Java绘制方法。但是,当paint放在ActionListener中时,我的编译器会抛出错误,尽管导入java.awt.geom,eclipse根本不会将paint识别为方法。
private class NumHandler implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
//Draw Ovals
public void paint (Graphics g)
{
int number;
int x = 10;
int y = 30;
int width = 20;
int height = 10;
number = Integer.parseInt(numberTF.getText());
for (int i = 0; i < number; i++)
{
g.drawOval(x, y, width, height);
x += 5;
y += 5;
width += 5;
height += 5;
}
}
}
}
答案 0 :(得分:3)
您的paint
方法不能在actionPerformed
方法中。它需要作为组件的类成员方法而不是NumHandler
存在。您可以在repaint()
方法中向请求发出一次ActionListener
次调用,以便进行重新绘制。
不要在paint
方法中放置任何可能导致异常的逻辑,即:
number = Integer.parseInt(numberTF.getText());
最好在actionPerformed
方法中完成。
此外,如果使用Swing,则paintComponent
是优化涂料性能的首选。请记得致电super.paintComponent(g);
重新绘制任何子组件。