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

作者: sbrhsieh (十年一夢)   2015-02-16 23:20:34
※ 引述《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 有變更的動作都會造成困擾。那 這是另外的問題了~~~

Links booklink

Contact Us: admin [ a t ] ucptt.com