[英]Determine who call stateChanged
I have a few sliders that look like this: 我有一些看起来像这样的滑块:
//Create the slider
JSlider speedSlider = new JSlider(JSlider.VERTICAL, MIN_SPEED, MAX_SPEED, initValue);
speedSlider.addChangeListener(controller);
speedSlider.setMajorTickSpacing(MAJOR_TICK_SPACING);
speedSlider.setPaintTicks(true);
panel.add(speedSlider);
in my View.java class 在我的View.java类中
there is Controller.java 有Controller.java
public class Controller implements ControllerInterface {
//...
@Override
public void stateChanged(ChangeEvent e) {
JSlider source = (JSlider)e.getSource();
if (!source.getValueIsAdjusting()) {
int speed = (int)source.getValue();
if (0 == speed) {
// stop
}
else {
model.setSpeedBody(speed);
}
}
}
}
The problem is that I can not determine from what it was exactly the slider event, how to do it? 问题是我无法确定滑块事件究竟是什么,怎么做? (ControllerInterface extends ChangeListener) (ControllerInterface扩展ChangeListener)
Test the value of the source: 测试源的值:
JSlider source = (JSlider)e.getSource();
if (source == speedSlider) {
...
}
else if (source == gearSlider) {
...
}
Or add a specific listener to each slider, so that each listener is notified of the changes of just one slider: 或者为每个滑块添加一个特定的侦听器,以便每个侦听器只通知一个滑块的更改:
speedSlider.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
...
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.