-2

大家好,我正在制作这个简单的电影票务系统我的程序流程如下,所有页面都在不同的 JFrame 中:主菜单>选择日期>选择电影>选择座位>返回 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);
    }

}                                        

请检查一下

4

1 回答 1

1

好吧, 的JToggleButton“启用”属性很可能不会true在您将其设置为false. 我认为您实际上正在查看other JToggleButton的实例。也许您每次访问“选择座位”GUI 时都重新创建它?在这种情况下,您想要的是从用户界面中分离应用程序数据(您可以在其中了解已预订的座位等信息)。

我相信这样做的一个好方法是使用模型-视图-控制器模式。让我向您介绍一下这种设计模式:

  • 模型保存您的应用程序数据(例如,可能是 a Set<Seat>
  • 视图用于显示您的数据(即您的JToggleButton
  • Controller是更新模型的入口点(在您的情况下,这些也是JToggleButton

您可以在此处阅读更多相关信息:MVC 模式 - tutorialspoint

基本上,不是每次都创建一个新的“空”视图,而是希望使用数据容器(模型)包含的值来加载它。然后,当您单击一些JToggleButton代表座位(控制器)时,您不会直接更改按钮的状态,而只需更新您的模型以切换座位的状态(保留或不保留)。然后,每次更新模型时,您的视图都会使用可用的新数据进行刷新。而已!

+--------------------------------------+
|    +-----------+                     |
|    |   Model   <-------+             |
|    +-----v-----+       |             |
|          |             |             |
|          |             |             |
|    +-----v---+---------^----------+  |
|    |  View   |     Controller     |  |
|    +---------+--------------------+  |
|                                      |
+---------- Your application ----------+

随意询问更多关于它的信息,它可能看起来确实需要改变很多,但它具有许多有趣的设计功能:)
特别是如果您需要另一个视图(例如,File您希望在其中保存数据的每个是时候做出改变了)!

于 2014-01-08T20:40:48.377 回答