Java JComboBox可编辑,选择时为空

Java JComboBox可编辑,选择时为空,java,swing,frame,jcombobox,Java,Swing,Frame,Jcombobox,我想制作一个JComboBox,其中一个特定的项目文本应该更改,并在选择时可编辑。例如,如果JComboBox的列表中有两个项目“一个”、“两个”,则选择“两个” 我已经编写了一个示例程序,其中我可以使字段可编辑,也可以更改文本,但不能同时更改两者。因此,请有人建议如何使选定的项目可编辑,以及更改文本 Object[] items = new Object[]{"One","Two"}; DefaultComboBoxModel dcbm = new DefaultComboBoxMo

我想制作一个
JComboBox
,其中一个特定的项目文本应该更改,并在选择时可编辑。例如,如果
JComboBox
的列表中有两个项目
“一个”、“两个”
,则选择
“两个”

我已经编写了一个示例程序,其中我可以使字段可编辑,也可以更改文本,但不能同时更改两者。因此,请有人建议如何使选定的项目可编辑,以及更改文本

 Object[] items = new Object[]{"One","Two"};
    DefaultComboBoxModel dcbm = new DefaultComboBoxModel(items);        

    final JComboBox comboBox = new JComboBox(dcbm);
    comboBox.setPreferredSize(new Dimension(200, 20));        
    comboBox.addItemListener(new ItemListener() {
        @Override
        public void itemStateChanged(ItemEvent e) {
            Object selectedItem = comboBox.getSelectedItem();
            boolean editable = selectedItem instanceof String && ((String)selectedItem).equals("Two");
             comboBox.setEditable(editable);
             //comboBox.setSelectedItem("text has changed");

        }
    });

因此,我不是最擅长使用jComboBox的人,所以这可能没有什么帮助,但我假设它使用一个数组来设置组合框中对象的字符串

(new String[] {"ONE","TWO"});
根据我对数组的理解,你可以

comboBox.addMouseListener(new MouseAdapter(){
    public void ActionPerformed(MouseEvent click){
        optionTwoClicked(click);
    }
}
private void optionTwoClicked(MouseEvent click){
    if (click.getSelectedItem()=String[2]){
        String onTwo = JOptionPane.showInputDialog(null,"Enter your message","Messages",2);
        textItem.setText()="onTwo";
    }else{ //do something here?
    }
}
然后添加如下内容的处理程序

comboBox.addMouseListener(new MouseAdapter(){
    public void ActionPerformed(MouseEvent click){
        optionTwoClicked(click);
    }
}
private void optionTwoClicked(MouseEvent click){
    if (click.getSelectedItem()=String[2]){
        String onTwo = JOptionPane.showInputDialog(null,"Enter your message","Messages",2);
        textItem.setText()="onTwo";
    }else{ //do something here?
    }
}
就像我之前说的,对jComboBox不是很熟悉,但是,
希望有帮助

所以我不是最好的将jComboBox放在头顶上的人,所以这可能没有帮助,但我假设它使用数组沿

(new String[] {"ONE","TWO"});
根据我对数组的理解,你可以

comboBox.addMouseListener(new MouseAdapter(){
    public void ActionPerformed(MouseEvent click){
        optionTwoClicked(click);
    }
}
private void optionTwoClicked(MouseEvent click){
    if (click.getSelectedItem()=String[2]){
        String onTwo = JOptionPane.showInputDialog(null,"Enter your message","Messages",2);
        textItem.setText()="onTwo";
    }else{ //do something here?
    }
}
然后添加如下内容的处理程序

comboBox.addMouseListener(new MouseAdapter(){
    public void ActionPerformed(MouseEvent click){
        optionTwoClicked(click);
    }
}
private void optionTwoClicked(MouseEvent click){
    if (click.getSelectedItem()=String[2]){
        String onTwo = JOptionPane.showInputDialog(null,"Enter your message","Messages",2);
        textItem.setText()="onTwo";
    }else{ //do something here?
    }
}
就像我之前说的,对jComboBox不是很熟悉,但是, 希望有帮助

类似于

String[] data = {"One", "Two"};
JComboBox<String> cb = new JComboBox<>(data);
add(cb);

cb.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        cb.setEditable(cb.getSelectedIndex() != 0);
    }
});
ActionListener

类似于

String[] data = {"One", "Two"};
JComboBox<String> cb = new JComboBox<>(data);
add(cb);

cb.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        cb.setEditable(cb.getSelectedIndex() != 0);
    }
});

如果有人选择了“一”,你希望发生什么?在这种情况下,它应该保持不可编辑,没有任何更改。如果有人选择了“一”那么您希望发生什么呢?在这种情况下,它应该保持不可编辑状态而不做任何更改。
==
不是比较
字符串
的Java。。。更不用说不编译
==
的代码不是比较
字符串的好方法。。。更不用说没有编译的代码了