如何将changeHandler()添加到我的程序中



请注意,我试图添加一个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]

您的ChangeHandler是什么?你还没有发布代码

以下是使用更改侦听器的示例


JSlider s = new JSlider();
s.addChangeListener(new ChangeListener() {
   public void stateChanged(ChangeEvent e) {
      System.out.println("Changed: " + e);
   }
});

ChangeHandler的实现是什么?您实际上并不需要单独的文件,ChangeListener接口只有一个方法,因此您可以在内联中声明它的同时快速提供实现

pickNum.addChangeListener(new ChangeListener() {    
    @Override
    public void stateChanged(ChangeEvent arg0) {
        JSlider s = (JSlider) arg0.getSource();
        index = s.getValue();   
    }
});

您所说的ChangeHandler类是什么?它不是JDK的一部分。您是否混淆了GWT中的ChangeHandler类和JDK中的ChangeListener

此外,我建议您查看Swing滑块,了解使用滑块的示例代码。例如,连接到滑块的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()调用

相关内容

  • 没有找到相关文章

最新更新