如何在 Java 中实现可编辑的 JComboBox?
JComboBox
- JComboBox 可以扩展 JComponent 类,并且它是 文本字段 和 下拉列表的组合,用户可以选择一个值。
- 如果控件的文本字段部分可编辑,用户可以在字段中输入值或编辑从下拉列表中检索的值。
- 默认情况下,用户不被允许编辑 JComboBox 的文本字段部分中的数据。如果我们想允许用户编辑文本字段,则调用 setEditable(true) 方法。
- 当用户对组合框执行操作时,JComboBox 可以生成 ActionListener、ChangeListener 或 ItemListener。
- 可以使用 getSelectedItem() 方法从 JComboBox 中获取选中的或输入的项。
示例
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class JEditableComboBoxTest extends JFrame { public JEditableComboBoxTest() { setTitle("JEditableComboBox Test"); setLayout(new BorderLayout()); final JComboBox combobox = new JComboBox(); final JList list = new JList(new DefaultListModel()); add(BorderLayout.NORTH, combobox); add(BorderLayout.CENTER, list); combobox.setEditable(true); combobox.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent ie) { if (ie.getStateChange() == ItemEvent.SELECTED) { ((DefaultListModel) list.getModel()).addElement(combobox.getSelectedItem()); combobox.insertItemAt(combobox.getSelectedItem(), 0); } } }); setSize(new Dimension(375, 250)); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLocationRelativeTo(null); setVisible(true); } public static void main(String[] args) throws Exception { new JEditableComboBoxTest(); } }
输出
广告