获取JSlider中每个更改的值

时间:2018-04-01 07:31:03

标签: java swing jslider

每次更改滑块位置时,我都会尝试获取JSlider的值。我决定先打印它来测试它。

package training;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;   
import javax.swing.event.*;

public class Temperature extends JSlider {

    JSlider Temp = new JSlider(-50, 50, 0);

    public Temperature (){
        add(Temp);
        Temp.setMajorTickSpacing(10);
        Temp.setMinorTickSpacing(1);

        Temp.addChangeListener(new ChangeListener () {
             public void stateChanged(ChangeEvent evt) {
            JSlider Temp = (JSlider) evt.getSource();
            if (!Temp.getValueIsAdjusting()) {
            int value = Temp.getValue();
            System.out.println(value);
                    }
                  }
            });
    }
}

然后我在主类中调用该方法:

public static void main(String[] args) {
        Temperature ns = new Temperature();
        System.out.println("User dir: " + System.getProperty("user.dir"));
        JFrame f = new JFrame("Window");
        JPanel p = new Training();

        ns.add(new Temperature());

           f.setSize(1100, 600);
           p.setSize(750, 600); 
           f.add(p);
           f.add(ns, BorderLayout.EAST);
           f.setVisible(true);

}

但是当我更改滑块位置时,控制台没有打印任何值。 知道我的代码的缺陷在哪里?

2 个答案:

答案 0 :(得分:1)

首先,改变:

public class Temperature extends JSlider {

    JSlider Temp = new JSlider(-50, 50, 0);

致:

public class Temperature { // NO NEED TO EXTEND HERE!

    JSlider Temp = new JSlider(-50, 50, 0);

..然后提供一种方法来返回实际附加了更改侦听器的滑块。

答案 1 :(得分:0)

你走在正确的轨道上...... 我最好的建议是听。

倾听变化。

当你听他们的时候,如果你的“听证会”,那就好了.. 那么你至少应该能够解释你所不断倾听的变化。

changeListener是您能够听到所听内容的变化的地方。对于Jbutton,它类似于动作侦听器。

如果单击某个按钮,则“侦听”该单击。一旦调度了click,就会“听到”,然后执行你指定的抽象方法。