2011-03-16 82 views
1

我有一個JComboBox其中有多個值。我需要能夠檢測用戶何時單擊JComboBox但不會更改當前選定的項目。Java Swing和JComboBox事件

itemStateChanged也沒有actionPerformed發生這種情況。

我應該使用什麼事件?

回答

1

使用其addMouseListener方法將MouseListener添加到JComboBox。您需要擴展MouseAdapter並僅覆蓋mouseClicked方法。

+0

我不認爲這是正確的。用戶可以點擊並釋放,然後從列表中選擇一個項目。這似乎並不是OP所問的情況。 – Pops 2011-03-16 20:19:38

2

如何按住鼠標按鈕記錄組合框的狀態,並將其與釋放鼠標按鈕時該框的值進行比較?

在這一點上,這是一個簡單的平等檢查。

1

如果用戶使用鍵盤打開彈出窗口,然後使用退出鍵關閉彈出窗口,該怎麼辦?

我會使用PopupMenuListener。這應該處理鼠標和鍵盤操作。這個概念與其他建議相同。顯示彈出窗口時,保存選定的索引。什麼時候關閉,你比較選定的索引,看它是否已經改變。

+0

這是一個好點。這絕對有可能可以使用鍵盤。 – user489041 2011-03-16 20:41:42

+1

如果這是您需要考慮的情況,則應更新您的問題。很少有人會在這裏看到它作爲對答案的評論。 – Pops 2011-03-16 23:23:28

0

我一直在尋找物品的右鍵點擊,所以這是一個稍微不同的問題。 但對我的解決辦法是

  1. 子類JComboBoxgetCellRenderer()與子類DefaultListCellRenderer

  2. 在具有boolean isSelectedboolean cellHasFocus參數,可以用於監視鼠標事件和執行list.setToolTipText()單元格渲染截距getListCellRendererComponent()

我確定非最終選擇更改會到達那裏,它可以被攔截。