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