我使用:
编辑了我的JComboBoxmyCombo.putClientProperty("JComboBox.isTableCellEditor", Boolean.TRUE);
我遇到以下任务的多重问题:
当写入组合框时,应该采用框的新内容并与列表进行比较,所有以此文本开头的条目都应显示在弹出菜单中。
所以,如果我有一个列表:" Aban" "阿文" "阿伯" " ACEN" "亚丁" 并输入" Ab"进入框中,然后弹出窗口应显示前3个条目。
单击其中一个条目时(通过键盘选择并按Enter / tab或单击鼠标)ComboBox应获取该值,弹出窗口应隐藏。我需要找到这个动作,因为一些元素在末尾有一个注释(在我需要的支持中),但只有在选择了其中一个条目时
以下是我的代码中最重要的部分:
final JTextComponent tcA = (JTextComponent) myCombo.getEditor().getEditorComponent();
tcA.getDocument().addDocumentListener(new DocumentListener() {
public void methodUsedByinsertUpdateAndremoveUpdate(DocumentEvent e) {
String item = ((JTextComponent) myCombo.getEditor().getEditorComponent()).getText();
//Routine to get the new list in a vector, not pasted for readability
DefaultComboBoxModel newMyComboModel = new DefaultComboBoxModel(myVectorList);
myCombo.setModel(newMyComboModel);
SwingUtilities.invokeLater(new Runnable() {
public void run() {
myCombo.showPopup();
}
});
}
}
myCombo.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(myCombo.getModel().getSize() == 1) {
//Special logic to find out if the selected item has a note
SwingUtilities.invokeLater(new Runnable() {
public void run() {
myCombo.hidePopup();
}
});
}
}
有了这个,我有:
如果您需要更多信息,请询问
答案 0 :(得分:0)
peeskillet推荐的Glazed List完全符合我的要求