即使frame为setVisible,也无法SetUndecorated(false)

时间:2014-05-17 16:51:52

标签: java swing jframe

在我的应用程序中从一个按钮参见我显示一个jframe(未修饰,MAXIMIZED_BOTH,Visible和alwaysOnTop)然后在我完成它的一段时间后,我将它从按钮<隐藏<关于那个框架本身的kbd>关闭 ...但是之后,当我再次点击按钮显示jframe时,它表示Exception in thread "AWT-EventQueue-0" java.awt.IllegalComponentStateException: The frame is displayable.甚至很难设置框架不可见。

这些信息是否充足还是您需要更多信息?

更新 我的主文件是FormTTS.java我还有一个名为FTDirect.java的文件,其中包含3个框架:SeeBlankMain。在主框架中,我有一个按钮参见,这使得看见框架可见,在我工作后的看框架中,我从一个按钮本身看不见,然后我返回到主框架。现在,如果我再次单击参见按钮,我会收到错误

代码: 参见FTDirect.java主框架中的按钮

See.setUndecorated(true);
See.setVisible(true);
See.setAlwaysOnTop(rootPaneCheckingEnabled);
See.setExtendedState(MAXIMIZED_BOTH);
......
在FTDirect.java中查看框架中的

关闭按钮

this.setVisible(false); //That's it

最小范例程序 (Pseudocodes)

文件:FormTTS.java

FTdirect directform = new FTdirect();
directform.setVisible(true);
directform.setExtendedState(MAXIMIZED_BOTH);

文件:FTDirect.java

//Main frame
private void MainSeeButtonActionPerformed(java.awt.event.ActionEvent evt) {                                              
    See.setUndecorated(true);
    See.setVisible(true);
    See.setAlwaysOnTop(rootPaneCheckingEnabled);
    See.setExtendedState(MAXIMIZED_BOTH);
}
//See frame - Close Button
private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    See.setVisible(false);
}

结束:我点击了看到按钮我在那里看到了框架我单击关闭按钮它变得不可见现在如果我再次单击看到按钮它会出错

1 个答案:

答案 0 :(得分:3)

使用Frame#isUndecorated()修改的代码参见方法指示此框架是否未修饰。默认情况下,所有帧都是最初修饰的。

if (!See.isUndecorated()) {
    See.setUndecorated(true);
}
if(!See.isVisible()){
    See.setVisible(true);
}
See.setAlwaysOnTop(rootPaneCheckingEnabled);
See.setExtendedState(MAXIMIZED_BOTH);