1
我现在处于一个尴尬的境地,所以我在这里得到一些专家的意见。我有一个Editable JComboBox
。我执行actionPerformed
事件,它只是正常工作。但我实施了mouseListener
这是行不通的。可编辑JCombobox mouseclicked事件不起作用
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个字符之后显示项目信息,那么它的负载很重,因为我对每个项目的信息都是重度加权的。
所以,我怎么能得到该事件时,通过鼠标选择一个项目单击?