1

ActionListener内でJavaペイントメソッドを使用しようとしています。ただし、ペイントがActionListener内に配置されると、コンパイラーはエラーをスローし、java.awt.geom。*をインポートしているにもかかわらず、Eclipseはペイントをメソッドとしてまったく認識しません。

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。メソッドに1回のrepaint()呼び出しを行って、再描画の実行を要求できます。ActionListener

メソッドに例外を引き起こす可能性のあるロジックを配置しないでくださいpaint。つまり、次のようになります。

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

これは、actionPerformedメソッドで行う方が適切です。

また、Swingを使用する場合は、paintComponentペイントパフォーマンスを最適化するために推奨されます。super.paintComponent(g);子コンポーネントを再描画するために呼び出すことを忘れないでください。

参照:AWTおよびSwingでのペイント

于 2012-12-02T23:44:08.303 に答える