gpt4 book ai didi

java - 基于另一个 ComboBox 的项目禁用 JComboBox

转载 作者:行者123 更新时间:2023-12-01 15:19:35 25 4
gpt4 key购买 nike

这就是我正在尝试做的事情。如果用户在 JComboBox1 中选择一个项目,我希望能够禁用 JComboBox2。但前提是他们选择“不可用”。我已经阅读了有关 Action 监听器等的内容,但是有没有一种方法可以让我使用 if 语句:这是我的想法:

if (jComboBox1.getSelectedItem().equals("Unavailable") == true) {
jComboBox2.setEnabled(false);
}

最佳答案

这当然可行,但您必须定期调用该代码段。更好的是使用 ActionListener - 它将来肯定会对您有所帮助。您必须创建一个实现 ActionListener 的类,例如

//This class should be a private class inside the class which holds the JComboBoxes.
private class DisableActionListener implements ActionListener {

public void actionPerformed(ActionEvent e) {
JComboBox cb = (JComboBox)e.getSource();
if (cb.getSelectedItem().equals("Unavailable")) {
jComboBox2.setEnabled(false);
}
}
}

为此,您必须将 ActionListener 附加到第一个 JComboBox - ActionListener 本身并没有什么好处!为此,请使用 JComboBox 上的 addActionListener() 方法,添加这个新创建的类的实例。

现在,剖析代码:

private class DisableActionListener implements ActionListener

在这里,我们创建一个实现 ActionListener 接口(interface)的类。这样,我们就可以创建我们自己的 ActionListener 模型。当你实现一个接口(interface)时,你必须重写该接口(interface)的所有方法,因此我们必须重写该接口(interface)上的标准actionPerformed(ActionEvent e)方法。每当您选择或取消选择一个项目时都会调用此方法(将调度 ActionEvent);因此,您必须将您想要发生的事情的逻辑放入此方法中。

JComboBox cb = (JComboBox)e.getSource();

每个导致调用actionPerformed()方法的ActionEvent都将包含额外的数据。其中一个数据是 ActionEvent 的来源 - 是什么导致了这个 Action 的发生?在本例中,我们知道源是 JComboBox,因为我们只将 ActionListener 附加到 JComboBox,因此我们可以将 ActionEvent 的源(一个对象)强制转换到发送事件的 JComboBox。

剩下的就是你自己写的if逻辑,修复了语法错误:

你写的

(jComboBox1.getSelectedItem().equals("Unavailable") == true),

但是 String 上的 equals() 方法已经返回 true,因此 (== true) 部分是不必要的冗余。在你的情况下,你基本上得到 (true == true)。

无论如何,希望这对您有所帮助!

关于java - 基于另一个 ComboBox 的项目禁用 JComboBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11145408/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com