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個字符之後顯示項目信息,那麼它的負載很重,因爲我對每個項目的信息都是重度加權的。
所以,我怎麼能得到該事件時,通過鼠標選擇一個項目單擊?