Re: [問題] JList add或clear 不要觸發valuechagne

看板java作者 (十年一夢)時間10年前 (2015/02/16 23:20), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《kevin1234562 (章魚)》之銘言: : private DefaultListModel<StepInfo> modelStep = new DefaultListModel<StepInfo>(); : private JList lstStep = new JList(modelStep); : ListSelectionListener lstStepSelectionListener = new ListSelectionListener() { : @Override : public void valueChanged(ListSelectionEvent e) { : if (!e.getValueIsAdjusting()) : JOptionPane.showMessageDialog(null, lstStep.getSelectedIndex()); : } : }; : lstStep.addListSelectionListener(lstStepSelectionListener); : 以上是我一個jListf加上Listener : 我遇到一個問題是 : 當我對lstStep addElement或者 clear他的時候 都為觸發 valueChanged 事件 : 這樣讓我很困擾.. : 我目前解決方式是用一個boolean變數 假如我要去做add或者clear的話 就使用變數來擋住 : 不知道是否有更好或者正規的方式?? : 這問題困擾我很久了.... 困擾你的部分是? ListSelectionEvent 是告知 selection 的哪個範圍有變更(沒有哪個部分是選取 的資訊),一般不會直接利用到 event 本身帶的範圍資訊,而是去向 JList/ ListSelectionModel 要 selected values/selected indices,再據以做適當處理。 以這個方向下去做,就不會有因為變更 model 而造成困擾一事,會的話應該是任何 造成 selection 有變更的動作都會造成困擾。那 這是另外的問題了~~~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.171.199.51 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1424100037.A.360.html
文章代碼(AID): #1KuWh5DW (java)
文章代碼(AID): #1KuWh5DW (java)