java - 如何从监听器禁用 Jcombobox 项目?

标签 java indexing jcombobox

我的项目有一个问题,因为我的目标是让用户用数组中的项目手动填充 6 个字段;我想到了 6 个具有相同项目的 JComboBox,当您在一个框中选择一个项目时,它在其余的框中将被禁用。我正在开始,虽然我已经搜索过,但我只找到了在其构造函数内执行此操作的方法。

cb1.addActionListener(new ActionListener(){ 

@Override
public void actionPerformed(ActionEvent e) {
     if(cb1.getSelectedIndex()==1) {
         // this is as far as I go, but disables the entire jcombobox
         cb2.setEnabled(false);

         // this is more like I want, but it doesn't work.
         cb2.setSelectedIndex(1).setEnabled(false);                            
 }}});

如果有人知道一种更有效的方法来使用户可以手动将数组项分配到许多字段,我会欢迎它。

最佳答案

您无法禁用JComboBox的项目。您可以将其从以下位置删除,具体方法如下:-

import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JComboBox;
import javax.swing.JFrame;
public class Combobox extends JFrame{
Combobox(){
    this.setVisible(true);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    String[] list={"car","bus","bike"};
    final JComboBox c1=new JComboBox(list);
    final JComboBox c2=new JComboBox(list);
    Container c=this.getContentPane();
    c.setLayout(new FlowLayout());
    c.add(c1);
    c.add(c2);
    c1.addActionListener(new ActionListener(){
        @Override
        public void actionPerformed(ActionEvent e) {
            int index=c1.getSelectedIndex();
            c2.removeItemAt(index);
            }
    });
    this.pack();
}
    public static void main(String[] args) {
        new Combobox();
    }
}

final JComboBox c1=new JComboBox(list); 将使 JComboBox 具有 list 的项目。使用 final 是因为 c1 在用于单击事件的内部类 ActionListener 中调用。 index=c1.getSelectedIndex(); 将获取 c1 中所选项目的索引位置c2.removeItemAt(index); 将删除位于 c2 的 index 位置的项目。由于c1c2都包含相似的项目,因此项目的index位置是相同的。 如果您想在某个时刻重新插入 c2 中的项目,那么 使用

保存要删除的项目的索引位置和要删除的项目的名称
index=c1.getSelectedIndex();
item=c2.getItemAtIndex(index);
c2.removeItemAt(index);

然后使用恢复项目

c2.insertItemAt(item,index);

注意 - 如果要在 ActionListener 外部使用,indexitem 应该在 ActionListener 外部声明。

关于java - 如何从监听器禁用 Jcombobox 项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15658777/

相关文章:

java - 在多个 bean 中重用一个 facelet

java - 使用 Vaadin 从菜单栏打开 pdf 文件

java - 是否可以解耦 Eclipse 的代码索引功能?

python - 从系列/列中查找第一个元素的索引(例如 "True")

java - 在由查询填充的 jcombobox 中设置默认值

java - 在 Java 中向 JComboBox 添加项目的问题

java - JComboBox 未出现在窗口中

java - 单个 JDBC 查询中的许多删除查询

java - 使用 Spoon Gradle 插件创建自定义注释处理器

mysql - (非典型)无法创建表 ‘dbnamehere.catalog_category_flat_store_1’