我想制作一个 JComboBox
,其中特定项目文本应更改并在选择时变为可编辑。例如,如果 JComboBox
有两个项目 “ONE” ,“TWO”
在其列表中,然后选择“TWO”
。
我编写了一个示例程序,其中我可以使字段可编辑,或者可以更改文本,但不能同时更改两者。所以请有人建议如何使选择性项目可编辑并更改文本
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");
}
});
最佳答案
类似...
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);
}
});
基本上会做到这一点,但它不会做的是更新模型的值,只是让你知道;)
如果您想在组合框变得可编辑时使编辑器“空白”,您可以添加...
if (cb.isEditable() && cb.getSelectedIndex() != -1) {
cb.setSelectedItem("");
}
到ActionListener
关于java - JComboBox 可编辑且选择时为空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36468212/