Java-如何;“取消隐藏”;JFrame
我对Java相当陌生,但熟悉本地Android开发,所以请耐心听我说xD。我创建了一个创建JFrame的应用程序。然后我将closeOperation设置为:Java-如何;“取消隐藏”;JFrame,java,swing,Java,Swing,我对Java相当陌生,但熟悉本地Android开发,所以请耐心听我说xD。我创建了一个创建JFrame的应用程序。然后我将closeOperation设置为:setDefaultCloseOperation(JFrame.HIDE\u ON\u CLOSE) 它按预期执行,帧被隐藏,这是我想要的(当我关闭时)。我需要应用程序继续运行(只有一个实例),因为我正在后台运行一个正在执行操作的线程 JFrame中按钮上的actionListener当前执行以下操作:setVisible(false) 我
setDefaultCloseOperation(JFrame.HIDE\u ON\u CLOSE)代码>
它按预期执行,帧被隐藏,这是我想要的(当我关闭时)。我需要应用程序继续运行(只有一个实例),因为我正在后台运行一个正在执行操作的线程
JFrame中按钮上的actionListener当前执行以下操作:setVisible(false)代码>
我的问题是,如何在JFrame被隐藏后再次最大化它?当用户单击任务栏中最小化的应用程序时,是否可以显示框架?是否需要实现某种类型的侦听器
提前感谢,如有任何建议,将不胜感激
更新
要使此解决方案正常工作,您需要执行以下操作。还可以看看XtremeBaumer的答案,看看是否有道理
在JFrame创建时setDefaultCloseOperation(JFrame.DO\u NOTHING\u\u On\u CLOSE)代码>。
当你想最小化应用程序时(点击可能)frame.setState(frame.ICONIFIED)代码>。
当您想再次最大化应用程序时frame.setState(frame.NORMAL)代码>在窗口中取消确认
事件
最后一件事,如果您想在用户单击退出按钮(红色x)时最小化您的应用程序,请将其添加到windowClosing
事件frame.setState(frame.ICONIFIED)代码>
我希望这能解决你的问题。通过创建此JFrame的实例将其添加到JFrame中,然后调用setVisible(true)
方法?谢谢,也许还可以将其添加到您的答案中(在我实现此答案时工作)-。否则,将永远不会调用windowDeiconified
事件。因此,我发现了一个问题,即一旦设置了可见(false)或隐藏()窗口,用户就无法通过单击图标再次显示它,因为没有图标。你是如何解决这个问题的?当JFrame被创建时,改为这样做(今天我将编辑我的问题)<代码>设置默认关闭操作(JFrame.DO\u NOTHING\u ON\u CLOSE)代码>。然后,您需要使用frame.setState(frame.ICONIFIED)自行处理JFrame的关闭代码>和帧设置状态(帧正常)代码>。图标化最小化和正常还原。用户应该不能关闭我的应用程序,是的,狡猾,但有很好的理由。客户点菜。
this.addWindowListener(new WindowListener(){
@Override
public void windowActivated(WindowEvent e) {
}
@Override
public void windowClosed(WindowEvent e) {
}
@Override
public void windowClosing(WindowEvent e) {
setState(Frame.ICONIFIED)
}
@Override
public void windowDeactivated(WindowEvent e) {
}
@Override
public void windowDeiconified(WindowEvent e) {
this.setVisible(true);
//this should be what you want
}
@Override
public void windowIconified(WindowEvent e) {
}
@Override
public void windowOpened(WindowEvent e) {
}
});