我有一个可编辑的JCombobox。我已经完成了从数据库加载数据所需的内容。
加载数据后,我会添加一些额外的数据,例如 .next。或 - ,原因有很多。 .next。或 - 只有在弹出菜单中突出显示时才有效。我已经设计好了他们的工作。
但我不想在JComboBox的JTextField中查看/选择 .next。或 - 。
为此,我重写了JCombobox,
searchCBX.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED
&& (".next.".equals(e.getItem()) || "-".equals(e.getItem()))) {
searchTF.setText("");
}
}
});
这里,searchCBX是我所需的组合框,searchTF是searchCBX的文本字段。当我尝试通过从键盘滚动JPopupmenu来选择 .next。或 - 时,它工作正常,searchTF会自动变为空。
现在当我尝试通过鼠标点击可见的弹出菜单选择 .next。或 - 时出现问题。它会自动选中。
我试图覆盖mouseListener,但它无效。
searchCBX.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent me) {
if ((".next.".equals(searchTF.getText()) || "-".equals(searchTF.getText()))) {
searchTF.setText("");
}
}
});
那么在鼠标点击值为 .next。或 - 的jComboBox弹出菜单后,如何从searchTF中删除所选数据。任何帮助都会非常感激。
答案 0 :(得分:0)
根据我的理解,您需要在从下拉列表中选择 .next。或 - 后删除 searchTF 的文字。的 searchCBX 即可。如果是这样的话,你不必担心这里的MouseListener。只需ItemStageChage事件即可完成工作。
以下是代码的必需部分:
public class Example extends JFrame {
private JComboBox searchCBX;
private JTextField searchTF;
/**
* Creates new form Example
*/
public Example() {
initComponents();
}
private void initComponents() {
searchCBX = new JComboBox();
searchTF = new JTextField();
searchCBX.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent evt) {
searchCBXItemStateChanged(evt);
}
});
}
private void searchCBXItemStateChanged(ItemEvent evt) {
if (evt.getStateChange() == ItemEvent.SELECTED
&& (".next.".equals(evt.getItem()) || "-".equals(evt.getItem()))) {
searchTF.setText("");
} else {
searchTF.setText(searchCBX.getSelectedItem().toString());
}
}
}