在paint()中只运行一次方法(Java)

在paint()中只运行一次方法(Java),java,methods,paintcomponent,Java,Methods,Paintcomponent,当我在paint()方法中调用一个方法时,我试图只运行一次,但当我正常调用它时,它只是反复运行。 示例: private void someMethod () { System.out.println ("Success"); } @Override public void paintComponent (Graphics g) { someMethod (); repaint (); } 这将永远输出“成功”,我只能输出一次。我认为你应该写同样的桥 试试这个: public class

当我在
paint()
方法中调用一个方法时,我试图只运行一次,但当我正常调用它时,它只是反复运行。 示例:

private void someMethod ()
{
 System.out.println ("Success");
}
@Override
public void paintComponent (Graphics g)
{
 someMethod ();
 repaint ();
}

这将永远输出“成功”,我只能输出一次。

我认为你应该写同样的桥

试试这个:

public class someClass{
    private boolean hasDone = false;
    public void paintComponent(Graphics g){
        super.paintComponent(g);
        if(!hasDone){
            someMethod();
            hasDone = true;
        }
    }
}

重新绘制组件时调用
paintComponent(..)
,在此方法内调用
repaint()
将产生无限递归。实际上
repaint
方法调用
paintComponent
方法。因此,当您在
paintComponent
中调用
repaint
时,它将进入一个无限循环。因此,它将继续打印
Success
使用全局布尔值指示此方法已被调用,并检查方法内部的布尔值,无论您有无限递归,
paintComponent
在paint manager认为必要时被调用,这可能是每秒多次。我有一种感觉,你试图以错误的方式完成一些事情。您想做什么?paintComponent方法仅用于绘制。它不用于输出字符串。