我在滑块上有一个简单的changelistener。有人能解释一下为什么当我点击一个新的位置时,它会发射3次吗?在我写代码将先前的值保存在某个地方之前,看看它是否真的发生了变化,我想知道是否有其他方法来解决这个问题。第一个跳跳器显示它原来的样子,下一个显示新值,最后一个重复新值。
slider_1 = new JSlider();
slider_1.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent arg0) {
if (fullyInitialized == 1) {
if (comboBox_1.getSelectedIndex() < 1) {
SendData2Device(1);
}
}
}
});
slider_1.setOrientation(SwingConstants.VERTICAL);发布于 2013-01-03 02:52:36
您需要检查更改是否为值调整。
完整教程的链接:http://docs.oracle.com/javase/tutorial/uiswing/components/slider.html
但这里是重要的一点:
public void stateChanged(ChangeEvent e) {
JSlider source = (JSlider)e.getSource();
if (!source.getValueIsAdjusting()) {
// Do what needs to occur here.
}
}基本上,当getValueIsAdjusting()返回false时,用户已停止移动滑块。
发布于 2013-01-03 02:56:07
在ChangeListener中有3个事件作为链的一部分,即mouseDown、mouseUp和更改本身。
更改完成后,可以使用getValueIsAdjusting对事件执行操作
JSlider source = (JSlider)e.getSource();
if (!source.getValueIsAdjusting()) {
...
} 请参阅:How to Write a Change Listener
https://stackoverflow.com/questions/14127354
复制相似问题