2010-08-26 14 views
1

當用戶更改JComboBox中的值時,我想提示他們確認更改。如果他們說「不」,那麼舊的價值將保持不變。如果他們說「是」,則會選擇新值。JComboBox和vetoableChange?

我嘗試添加一個VetoableChangeListener到組合框,但是這似乎並沒有被解僱!

根據JComponent.addVetoableListener的JavaDoc,「將VetoableChangeListener添加到偵聽器列表中,該偵聽器已註冊所有屬性。」

有什麼想法發生了什麼?

非常感謝!

回答

2

創建JComboBox的子類並重載setSelectedItem。在設置新值之前,調用fireVetoableChange。如果引發異常,請不要設置新值。如果沒有拋出異常,請調用super.setSelectedItem。

+0

如果你不得不重寫'setSelectedItem',那麼你可能會做「你想改變這個項目嗎?」代碼直接放在'setSelectedItem'中,而不會打擾調用'fireVetoableChange'並使用'VetoableChangeListener'。 – mluisbrown 2012-07-09 11:42:51