每次更改滑块位置时,我都会尝试获取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);
}
但是当我更改滑块位置时,控制台没有打印任何值。 知道我的代码的缺陷在哪里?
答案 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,就会“听到”,然后执行你指定的抽象方法。