【问题标题】:Disabling a jToggleButton [duplicate]禁用 jToggleButton [重复]
【发布时间】:2014-01-08 19:59:43
【问题描述】:

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

我在座位选择器中使用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);
    }

}                                        

请查收

【问题讨论】:

    标签: java swing jtogglebutton


    【解决方案1】:

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

    我认为,这样做的一个好方法是使用 Model-View-Controller 模式。 让我给你介绍一下这个设计模式:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2011-12-14
      • 2017-05-21
      • 1970-01-01
      • 2012-11-06
      • 1970-01-01
      • 2012-12-18
      • 1970-01-01
      • 1970-01-01
      • 2011-11-23
      相关资源
      最近更新 更多