1

我正在尝试在 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;
                   }
              }
    }

}
4

1 回答 1

3

您的paint方法不能在您的actionPerformed方法中。它需要作为组件的类成员方法而不是NumHandler. 您可以在您的方法中进行一次repaint()调用以请求执行重绘。ActionListener

不要在您的方法中放置任何可能导致异常的逻辑paint,即:

number = Integer.parseInt(numberTF.getText());

这在方法中做得更好actionPerformed

此外,如果使用 Swing,paintComponent则更适合优化油漆性能。请记住调用super.paintComponent(g);以重新绘制任何子组件。

请参阅:在 AWT 和 Swing 中绘画

于 2012-12-02T23:44:08.303 回答