gpt4 book ai didi

java - 即使框架已 setVisible(false) 也无法 SetUndecorated

转载 作者:行者123 更新时间:2023-12-01 22:58:25 35 4
gpt4 key购买 nike

在我的应用程序中,通过按钮查看我显示一个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 个帧:See , BlankMain 。在主框架中,我有一个按钮 See ,它使查看框架可见,在我工作后的查看框架中,我通过按钮本身使其不可见,然后返回主框架。现在,如果我再次单击 See 按钮,我会收到错误

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

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

关闭 按钮

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

最小示例程序(伪代码)

文件: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);
}

结论:我单击“查看”按钮,在其中看到“查看”框架,单击“关闭”按钮,它变得不可见,现在如果我再次单击“查看”按钮,则会出现错误

最佳答案

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

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

关于java - 即使框架已 setVisible(false) 也无法 SetUndecorated,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23713869/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com