I am trying to get the value of the JSlider
for every time I change the slider position. I decided to test it by print it first.
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);
}
}
});
}
}
And then I call the method in the 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);
}
But the console didn't print any value when I change the slider position. Any idea of where the flaw of my code is?
First, change:
public class Temperature extends JSlider {
JSlider Temp = new JSlider(-50, 50, 0);
To:
public class Temperature { // NO NEED TO EXTEND HERE!
JSlider Temp = new JSlider(-50, 50, 0);
..then provide a method to return the slider that actually has a change listener attached.