ActionListener中的Paint方法

时间:2012-12-02 23:41:38

标签: java swing paint actionlistener paintcomponent

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

}

1 个答案:

答案 0 :(得分:3)

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

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

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

最好在actionPerformed方法中完成。

此外,如果使用Swing,则paintComponent是优化涂料性能的首选。请记得致电super.paintComponent(g);重新绘制任何子组件。

请参阅:Painting in AWT and Swing