可以在整个执行过程中禁用jToggleButton吗?

嘿家伙所以我正在制作这个简单的电影票务系统我的程序流程如下,所有页面都在不同的JFrames:主菜单>选择日>选择电影>选择座位>返回MainMenu

我在座位选择器中使用JToggle 。 一旦选定,是否可以在整个执行过程中禁用切换按钮? 我正在使用JToggleButton.setEnabled(false); 但是每当我回到菜单并回到座位选择器时,按钮仍然没有被禁用。我想做的就是在我回到MainMenu之后禁用它,所以当我回到座位选择器时,我不能再选择这个座位了。

下面是一些代码:

 private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: this.setVisible(false); MainSelection s = new MainSelection(); s.setVisible(true); if(jToggleButton1.isSelected()) { jToggleButton1.setEnabled(false); } if(jToggleButton2.isSelected()) { jToggleButton2.setEnabled(false); } if(jToggleButton3.isSelected()) { jToggleButton3.setEnabled(false); } } 

请检查一下

您似乎正在重新创建GUI,每次显示时都会显示切换按钮,您不应该这样做。

代替

  • 为此窗口创建一个变量
  • 考虑以懒惰的方式创建它 – 当且仅当它为null时才创建它
  • 否则,如果不是null并且需要显示,只需通过setVisible(true)使其可见。
  • 并且反过来在需要时通过setVisible(false)使其不可见。
  • 不要在您的应用程序中显示多个JFrame。 相反,应用程序应该有一个主JFrame,然后你可以让它启动对话框窗口,如JDialogs,如果合适,或者如果合适,通过CardLayout交换“视图”。

特别:

  • 使MainSelection变量s成为类的实例字段 – 声明它并在类中初始化它一次
  • 仅在此方法中将其设置为可见。 不要创建一个新的。
  • 将来,不要向用户吐出一堆JFrame,因为它是一个可怕而烦人的用户界面。 而是阅读CardLayout教程(谷歌将帮助您找到它),并使用它。 将代码转换为创建JPanel而不是JFrame。

编辑
你问:

我真的需要帮助Make MainSelection变量,s,类的实例字段 – 声明它并在类中初始化它一次。 仅在此方法中将其设置为可见。 不要创建一个新的。 我如何使它成为实例字段? 我还要在主选择表格或座位选择表格中声明吗?

你正在做的事情:

 public class Foo { private void someMethod() { // the code below creates a new SomeClass instance each time the method is called SomeClass localVariable = new SomeClass(); localVariable.setVisible(true); } } 

而我建议你这样做:

 public class Foo { // the code below creates a SomeClass instance only *once*. private SomeClass instanceField = new SomeClass(); private void someMethod() { instanceField.setVisible(true); } } 

此外,你应该对你的重复post做一些事情:

  • 首先关闭它 – 你不应该有一个以上相同的问题 – 这对我们和其他人来说是不公平的。
  • 并在另一篇文章中接受并向上投票,以表达对海报post的努力和乐于助人的赞赏。