[英]Java hide JFrame1 and JFrame2, when JFrame0 is deactivated?
当用户从“ mainFrame”中单击时,是否可以隐藏我的应用程序的所有其他JFrame?
我尝试了这个
public void windowActivated(WindowEvent we) {
frame1.setVisible(true);
frame.setVisible(true);
}
public void windowDeactivated(WindowEvent we) {
frame1.setVisible(false);
frame2.setVisible(false);
}`
但这不起作用。 我所有的Windows开始闪烁。 我无法将JFrame2设置为无法对焦。
还有其他方法吗?
改用非模式对话框,默认情况下会对问题进行排序。
import javax.swing.*;
class TestDialogMinimize {
public static void main(String[] args) {
Runnable r = new Runnable() {
public void run() {
JFrame f = new JFrame("Has a Dialog");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(400,400);
JDialog d = new JDialog(f);
d.setSize(200,200);
f.setVisible(true);
d.setVisible(true);
}
};
SwingUtilities.invokeLater(r);
}
}
此答案中的非模式对话框建议是一种解决方法。 另请参见此答案 。
如果出于某些原因您需要继续使用框架,可以使用
frame1.setState(Frame.ICONIFIED)
并用
frame1.setState(Frame.NORMAL)
在代码块中处理这些内容,例如:
frame0.addWindowStateListener(new WindowStateListener() {
@Override
public void windowStateChanged(WindowEvent e) {
// handle change
}
});
如该问题的答案所述 。
如果要在关闭frame0时关闭所有框架,则可以使用:
frame0.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
当frame0关闭时,退出程序并关闭所有帧。 如果您只是隐藏在关闭状态,请使用窗口侦听器。 您可以在WindowListener
使用frame1.setVisible(false)
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.