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-那你为什么不能用它们来暂停和恢复绘画呢?使用定时器
对象驱动动画很容易,正如我前面评论中的链接所示。