Java 最小化时防止重新绘制窗口

Java 最小化时防止重新绘制窗口,java,swing,window,repaint,jwindow,Java,Swing,Window,Repaint,Jwindow,当程序最小化时,能否停止程序重新绘制面板? *使用Swing时,我想真正的问题是在最小化时挂起动画循环等。如果您使用的是JFrame,则可以通过以下方式检测窗口最小化事件: myFrame.addWindowStateListener( new WindowStateListener() { @Override public void windowStateChanged(WindowEvent evt) { if (myFrame

当程序最小化时,能否停止程序重新绘制面板?
*使用Swing时,我想真正的问题是在最小化时挂起动画循环等。如果您使用的是
JFrame
,则可以通过以下方式检测窗口最小化事件:

myFrame.addWindowStateListener(
    new WindowStateListener() {
        @Override
        public void windowStateChanged(WindowEvent evt) {
            if (myFrame.getState() == Frame.ICONIFIED) {
                // suspend painting/animation loops
            } else {
                // resume or continue painting/animation loops
            }
        }
    }
);

我想,真正的问题是最小化时挂起动画循环等。如果您使用的是
JFrame
,则可以通过以下方式检测窗口最小化事件:

myFrame.addWindowStateListener(
    new WindowStateListener() {
        @Override
        public void windowStateChanged(WindowEvent evt) {
            if (myFrame.getState() == Frame.ICONIFIED) {
                // suspend painting/animation loops
            } else {
                // resume or continue painting/animation loops
            }
        }
    }
);

使用WindowListener的一个示例可以很简单,只需对我前面的示例进行一个小的修改,可以找到:


使用WindowListener的一个示例可以很简单,只需对我前面的示例进行一个小的修改,可以找到:



使用什么框架?摆动AWT?SWT?其他?如果重新喷漆为什么重要?这让我怀疑下面潜藏着一个更大的问题,比如在
paint
paintComponent
方法中有程序逻辑。在我的程序中,有一个线程每1秒调用一次repaint,它会重新绘制模拟银行账户余额的图形。如果我在不应该重新绘制的时候重新绘制,这会抛出图形。您的Jar文件没有源代码。更重要的是,我做了一些主要的工作试图在这方面帮助您:包括一个演示程序,而您没有回复。这是怎么回事??我觉得我好像在这件事上浪费了很多时间。你知道,这不是激励员工帮助你的方法。使用什么框架?摆动AWT?SWT?其他?如果重新喷漆为什么重要?这让我怀疑下面潜藏着一个更大的问题,比如在
paint
paintComponent
方法中有程序逻辑。在我的程序中,有一个线程每1秒调用一次repaint,它会重新绘制模拟银行账户余额的图形。如果我在不应该重新绘制的时候重新绘制,这会抛出图形。您的Jar文件没有源代码。更重要的是,我做了一些主要的工作试图在这方面帮助您:包括一个演示程序,而您没有回复。这是怎么回事??我觉得我好像在这件事上浪费了很多时间。你知道,这不是激励人们帮助你更进一步的方法。@Chris:看看摆动计时器的可用方法。你会明白的。@Chris-如果你的动画是由
javax.swing.Timer
驱动的,你可以简单地调用定时器的
stop()
start()
方法来暂停/恢复动画。有关一些示例代码,请参阅本文。这里有一个
计时器
相关示例。@TedHopp我熟悉这些方法,因为我在这个程序中在jar文件的开始和停止按钮上使用了它们above@Chris-那你为什么不能用它们来暂停和恢复绘画呢?使用
定时器
对象驱动动画很容易,正如我前面评论中的链接所示。@Chris:看看Swing定时器可用的方法。你会明白的。@Chris-如果你的动画是由
javax.swing.Timer
驱动的,你可以简单地调用定时器的
stop()
start()
方法来暂停/恢复动画。有关一些示例代码,请参阅本文。这里有一个
计时器
相关示例。@TedHopp我熟悉这些方法,因为我在这个程序中在jar文件的开始和停止按钮上使用了它们above@Chris-那你为什么不能用它们来暂停和恢复绘画呢?使用
定时器
对象驱动动画很容易,正如我前面评论中的链接所示。