最小化JFrame时调用哪些代码?它是否与听众联系在一起?我只是想知道帧最小化时内部会发生什么。
编辑:
我实际上正在寻找最小化帧时调用的代码。例如,实际windowListener
的代码。我一直在搜索JFrame
,Frame
和Window
搜索windowIconified
,但无法找到实际的代码。
原因是,当我的程序运行时,其中一个面板有一个小缺陷,但是当我最小化并最大化JFrame时,问题就消失了。我想知道发生了什么,以便我可以将我正在进行的任何事情应用到我的面板上,以便它正确描绘。
答案 0 :(得分:3)
您可以使用WindowListener
进行收听例如
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.JFrame;
public class WinStateListener implements WindowListener {
static JFrame window = new JFrame("Window State Listener");
public WinStateListener() {
window.setBounds(30, 30, 300, 300);
window.addWindowListener(this);
window.setVisible(true);
}
public static void main(String[] args) {
WinStateListener winStateListener = new WinStateListener();
}
public void windowClosing(WindowEvent e) {
System.out.println("Closing");
window.dispose();
System.exit(0);
}
public void windowOpened(WindowEvent e) {
System.out.println("Opened");
}
public void windowClosed(WindowEvent e) {
System.out.println("Closed");
}
public void windowIconified(WindowEvent e) {
System.out.println("Iconified");
}
public void windowDeiconified(WindowEvent e) {
System.out.println("Deiconified");
}
public void windowActivated(WindowEvent e) {
System.out.println("Activated");
}
public void windowDeactivated(WindowEvent e) {
System.out.println("Deactivated");
}
}
答案 1 :(得分:2)
您想了解WindowListeners
和WindowEvents
。您正在谈论的事件称为图标化窗口。在这里阅读更多内容:
http://download.oracle.com/javase/tutorial/uiswing/events/windowlistener.html
编辑:
在正在执行的JPanel上使用revalidate()
然后repaint()
。
答案 2 :(得分:1)
最小化JFrame应用程序时,会调用窗口事件windowIconified
。如果您想自己处理此类窗口事件,请实现WindowListener
接口或使用WindowAdapter
抽象类。
答案 3 :(得分:1)
最小化
JFrame
时会调用哪些代码?
如How to Make Frames: Specifying Window Decorations所述,“窗口装饰由本机窗口系统提供。”本文接着描述了您可以对主机平台的默认更改。
附录:阅读您的更新,请注意,恢复图标化窗口会重新绘制它。正如@Andrew Thompson指出的那样,您可能需要验证您是否正在构建event dispatch thread。您可能还需要安排repaint()
。 sscce可能会澄清事情。