我在座位选择器中使用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);
}
}
请查看
答案 0 :(得分:1)
好吧,JToggleButton
的“已启用”属性很可能在您将其设置为true
时不会将自身重置为false
。我认为您实际上正在查看其他 JToggleButton
的实例。也许你每次访问“选择座位”GUI时都重新创建它?
在这种情况下,您想要的是从用户界面中分离应用程序数据(您有关于已预留哪个座位的信息等)。
我认为,这样做的好方法是使用模型 - 视图 - 控制器模式。 让我向您介绍这种设计模式:
Set<Seat>
)JToggleButton
)JToggleButton
)您可以在那里阅读更多相关信息:MVC Pattern - tutorialspoint。
基本上,您不是每次都创建一个新的“空”查看,而是要使用数据容器包含的值(模型)加载它。然后,当您点击代表座位的某个JToggleButton
(控制器)时,您不会直接更改按钮的状态,而只需更新模型切换座位的状态(保留与否)。然后,每次更新模型时,您的查看都会使用可用的新数据进行刷新。就是这样!
+--------------------------------------+
| +-----------+ |
| | Model <-------+ |
| +-----v-----+ | |
| | | |
| | | |
| +-----v---+---------^----------+ |
| | View | Controller | |
| +---------+--------------------+ |
| |
+---------- Your application ----------+
随意提出更多相关信息,它可能看起来真的很多,但它带有许多有趣的设计功能:)
特别是如果您需要另一个查看(例如,每次进行更改时您希望保存数据的File
)!