Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否可能在整个执行过程中禁用jToggleButton?_Java_Swing_Jtogglebutton - Fatal编程技术网

Java 是否可能在整个执行过程中禁用jToggleButton?

Java 是否可能在整个执行过程中禁用jToggleButton?,java,swing,jtogglebutton,Java,Swing,Jtogglebutton,嘿,伙计们,我正在制作这个简单的电影票务系统 我的程序流程如下,所有页面都在不同的JFrames中:主菜单>选择日期>选择电影>选择座位>返回主菜单 我正在座位选择器中使用JToggle。一旦选中,是否可以在整个执行过程中禁用切换按钮?我正在使用JToggleButton.setEnabledfalse;但每次我回到菜单,回到座位选择器,按钮仍然没有被禁用。我想做的是,即使在我回到主菜单后,也要禁用它,所以当我回到座位选择器时,我不能再选择这个座位了 下面是其中的一些代码: private vo

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

我正在座位选择器中使用JToggle。一旦选中,是否可以在整个执行过程中禁用切换按钮?我正在使用JToggleButton.setEnabledfalse;但每次我回到菜单,回到座位选择器,按钮仍然没有被禁用。我想做的是,即使在我回到主菜单后,也要禁用它,所以当我回到座位选择器时,我不能再选择这个座位了

下面是其中的一些代码:

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,每次显示切换按钮时都会显示该GUI,您不应该这样做

反而

为此窗口创建一个变量 考虑以懒惰的方式创建它-当且仅当它为空时创建它 否则,如果不是null并且需要显示,只需通过setVisibletrue使其可见即可。 相反,在需要时通过setVisiblefalse使其不可见。 不要在应用程序中显示多个JFrame。相反,应用程序应该有一个主JFrame,然后您可以让它启动对话框窗口,如JDialogs(如果合适),或者通过CardLayout(如果合适)交换视图。 具体而言:

使MainSelection变量s成为类的实例字段-在类中声明并初始化它一次。 仅在此方法中将其设置为可见。不要创建一个新的。 在将来,不要向用户吐出一堆JFrames,因为它是一个糟糕而烦人的用户界面。相反,请阅读CardLayout教程,谷歌将帮助您找到并使用它。使您的代码面向创建JPanel,而不是JFrames。 编辑 你问:

我真的需要帮助使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);
  }
}
另外,你应该对你的那篇重复文章做点什么:

首先关闭它-你不应该有超过一个相同的问题-这对我们和其他人不公平。 并在另一个帖子中接受并向上投票,以表示对海报帖子的努力和帮助的感谢。
你还没有解释为什么setEnabledfalse不适合你。setEnabledfalse可以工作,但它只在JFrame上工作,在我进入主菜单后,再回到这个座位选择器,我可以重新选择那些座位again@JonathanDrapeau重新创建座位选择是什么意思??以及如何禁用it@JonathanDrapeau是的,我的每一页都在JFrames中,它们不应该都在JFrames中。如果显示的是依赖窗口,则应显示JDialogs。如果你正在交换视图,考虑使用一个卡布局并用它交换jSt.对不起,我不太明白所说的内容,因为我刚开始java编程,你能演示一下吗?我怎么能做到呢??装满水的气垫船eels@user3144549:你不应该是第一个显示代码的人吗?如果您愿意,我们可以更好地帮助您解决具体问题。我可以给您发送电子邮件或其他什么吗?lol即使复制部分代码在注释部分也太长@hover@user3144549:否,您应该尝试在此处发布相关代码,作为对原始问题的添加/编辑。你不想发布太多的代码,因为这对志愿者来说太多了,可能会被忽略。您不想发布太少的代码,因为它可能没有包含足够的相关代码,我们无法理解您的问题。然后,您的任务是尝试找出如何发布正确数量和类型的代码。这需要付出努力,但值得。查看创建和发布。请始终将代码作为对原始问题的编辑发布,而不是发布在无法阅读的评论中。谢谢而且,没有if循环这样的东西。这不是一个循环,这是一个重要的区别。