我在我的程序中使用了一个 JSlider,并为此实现了一个 ChangeListener。
public void stateChanged(ChangeEvent e)
{
JSlider source=(JSlider) e.getSource();
frame_value.setText(Integer.toString(source.getValue()));
//Condition to change the frame_no only when user has stopped moving the slider
if (!source.getValueIsAdjusting())
{
frame_no=(int) source.getValue()-1;
if(frame_no<0)
frame_no=0;
}
....
}
发生的情况是,每当调用 ChangeListener 时,程序都会跳过 if 块,然后转到代码。我不明白为什么会这样。我无法从 JSlider 获得正确的值。请帮忙!!
PS:我不知道是不是这个原因,但是最近我设置了JSlider的UI,将勾选放在我点击它的地方。我不知道这是否对它负责。这是代码:
slider.setUI(new MetalSliderUI() {
protected void scrollDueToClickInTrack(int direction) {
int value = HEVC_Analyzer.slider.getValue();
value = this.valueForXPosition(HEVC_Analyzer.slider.getMousePosition().x);
HEVC_Analyzer.slider.setValue(value);
}
});