我现在处于一个尴尬的境地,所以我在这里寻求一些专家的建议。我有一个Editable JComboBox
. 我有实现actionPerformed
事件,它工作正常。但我有mouseListener
一个不起作用的工具。
component = jcbItemType.getEditor().getEditorComponent();
component.addMouseListener(new java.awt.event.MouseListener() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jcbItemTypeMouseClicked(evt);
}
public void mousePressed(java.awt.event.MouseEvent evt) {
jcbItemTypeMousePressed(evt);
}
public void mouseReleased(java.awt.event.MouseEvent evt) {
jcbItemTypeMouseReleased(evt);
}
public void mouseExited(java.awt.event.MouseEvent evt) {
jcbItemTypeMouseReleased(evt);
}
public void mouseEntered(java.awt.event.MouseEvent evt) {
jcbItemTypeMouseReleased(evt);
}
});
我还尝试了以下代码:
Component[] comps = jcbItemType.getComponents();
for(int i = 0; i < comps.length; i++)
{
comps[i].addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jcbItemTypeMouseClicked(evt);
}
public void mousePressed(java.awt.event.MouseEvent evt) {
jcbItemTypeMousePressed(evt);
}
public void mouseReleased(java.awt.event.MouseEvent evt) {
jcbItemTypeMouseReleased(evt);
}
public void mouseExited(java.awt.event.MouseEvent evt) {
jcbItemTypeMouseReleased(evt);
}
public void mouseEntered(java.awt.event.MouseEvent evt) {
jcbItemTypeMouseReleased(evt);
}
});
}
我知道这JComboBox
是一个复合元素,因此直接鼠标处理事件将不起作用。但是我使用了单个组件mouseListener
,但它也不起作用。
有人可以询问stateChanged
事件,但我想在完全选择项目后加载一些信息,而不是在我只输入项目的 2/3 个字符时加载一些信息。如果它仅在stateChanged
2/3 个字符之后显示项目信息,则它会负载很重,因为我针对每个项目的信息权重很大。
那么,当通过鼠标单击选择项目时如何获取事件?