所謂的 JSlider ChangeListener 自 high 問題,指的是在監控 javax.swing.JSlider 的刻度的時候,要使用 JSlider.addChangeListener(ChangeListener cl) 加入並且實作一個 ChangeListener 聆聽 event,每次有事情發生的時候,就會自動呼叫 JSlider.stateChanged(ChangeEvent ce),比如:

public void stateChanged(ChangeEvent ce) {
if(ce.getSource() == this.xSlider) {
this.procedureToProcessXSlider();
}
}


  但是如果這個 procedureToProcessXSlider() 裡面有幾百行怎麼辦?每拉動一個刻度都會發出 event哦,如果把 JSlider 從 75 拉到 174,這樣就會發出 100 次 event,莫名其妙就執行了幾萬行程式碼,正式的解法我還沒有去網路上找過,不過我自己是這樣解 的:

public void stateChanged(ChangeEvent ce) {
if(ce.getSource() == this.xSlider) {
if(!this.xSlider.getValueIsAdjusting()) {
this.procedureToProcessXSlider();
}
}
}

台南小新 發表在 痞客邦 PIXNET 留言(0) 人氣()