为 JSlider 的每一次变化获取价值
Acquire value for every change in 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);
}
}
});
}
}
然后我在main中调用方法class:
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);
}
但是当我更改滑块位置时,控制台没有打印任何值。
知道我的代码的缺陷在哪里吗?
首先,改变:
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);
..然后为 return 实际附加了更改侦听器的滑块提供一种方法。
你走在正确的轨道上......
我最好的建议是倾听。
聆听变化。
当您倾听他们的声音时,如果您的 "hearing" 很好..
然后,您至少应该能够在您不断聆听的内容中解释变化是什么。
changeListener 是您可以听到正在收听的内容发生变化的地方。它类似于 Jbutton 的动作侦听器。
如果单击了一个按钮,则您 "Listen" 负责该次单击。调度点击后,它是 "heard",然后在其中执行您指定的抽象方法。
每次更改滑块位置时,我都试图获取 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);
}
}
});
}
}
然后我在main中调用方法class:
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);
}
但是当我更改滑块位置时,控制台没有打印任何值。 知道我的代码的缺陷在哪里吗?
首先,改变:
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);
..然后为 return 实际附加了更改侦听器的滑块提供一种方法。
你走在正确的轨道上...... 我最好的建议是倾听。
聆听变化。
当您倾听他们的声音时,如果您的 "hearing" 很好.. 然后,您至少应该能够在您不断聆听的内容中解释变化是什么。
changeListener 是您可以听到正在收听的内容发生变化的地方。它类似于 Jbutton 的动作侦听器。
如果单击了一个按钮,则您 "Listen" 负责该次单击。调度点击后,它是 "heard",然后在其中执行您指定的抽象方法。