拜托,我试图添加一个changeHandler事件,但我不认为我做对了。我正在看以下陈述..
pickNum.addChangeListener(new ChangeHandler());
@Override
public void stateChanged(changeEvent e)
{
JSlider s = (JSlider)e.getSource();
index = s.getValue();
}
有什么我可以做得更好的因为因为,它不起作用..
import javax.swing.*;
public class Slider extends JFrame{
public static int index;
JSlider pickNum = new JSlider(JSlider.HORIZONTAL,0,30,5);
public Slider()
{
super("Slider");
this.pack();
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pickNum.setMajorTickSpacing(10);
pickNum.setMinorTickSpacing(1);
pickNum.setPaintTicks(true);
pickNum.setPaintLabels(true);
pickNum.addChangeListener(new ChangeHandler());
@Override
public void stateChanged(changeEvent e)
{
JSlider s = (JSlider)e.getSource();
index = s.getValue();
}
getPointedValue();
this.add(pickNum);
this.setVisible(true);
}
public final int getPointedValue()
{
int value;
value = pickNum.getValue();
return value;
}
public static void main(String[] args) {
Slider frame = new Slider();
System.out.println("value is :"+Slider.index);
}
}
[/CODE]
答案 0 :(得分:3)
你的ChangeHandler是什么?您还没有发布该代码
以下是使用更改侦听器的示例
JSlider s = new JSlider();
s.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
System.out.println("Changed: " + e);
}
});
答案 1 :(得分:2)
ChangeHandler
的实施情况如何?你真的不需要一个单独的文件,ChangeListener接口只有一个方法,所以你可以快速提供一个实现,同时声明它是内联的
pickNum.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent arg0) {
JSlider s = (JSlider) arg0.getSource();
index = s.getValue();
}
});
答案 2 :(得分:2)
你在谈论的ChangeHandler
课程是什么?它不是JDK的一部分。您是否将GWT的ChangeHandler
类与JDK的ChangeListener
混淆了?
此外,我建议您查看使用滑块的示例代码Swing slider。例如,附加到滑块
的这种ChangeListener
的一个很好的示例实现
public void stateChanged(ChangeEvent e) {
JSlider source = (JSlider)e.getSource();
if (!source.getValueIsAdjusting()) {
int fps = (int)source.getValue();
if (fps == 0) {
if (!frozen) stopAnimation();
} else {
delay = 1000 / fps;
timer.setDelay(delay);
timer.setInitialDelay(delay * 10);
if (frozen) startAnimation();
}
}
}
请注意您在代码段中遗漏的getValueIsAdjusting()
来电