I have created a JSLider from 0 to 1 with an increment of 0.1. I wrote the following code to implement it but I am not sure how to fetch values from the slider since the function getValue() only fetches integer values. In my case it always fetches 10 no matter where I move the slider. Please can anyone tell me how I can fetch the double values from my slider.
slider=new JSlider();
slider.setMajorTickSpacing(1);
slider.setMaximum(10);
slider.setPaintLabels(true);
slider.setPaintTicks(true);
slider.setPreferredSize(new java.awt.Dimension(230, 46));
Format f = new DecimalFormat("0.0");
Hashtable<Integer, JComponent> labels = new Hashtable<Integer, JComponent>();
for(int i=0;i<=10;i++){
JLabel label = new JLabel(f.format(i*0.1));
label.setFont(label.getFont().deriveFont(Font.PLAIN));
labels.put(i,label);
}
slider.setLabelTable(labels);
Following is the code for the listener
slider.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent event) {
if(!slider.getValueIsAdjusting())
{
double value = slider.getValue();
System.out.println("value"+value);
}
}
});
Thanks in advance.
Regards, Colin
Your code works perfectly as is. The only change I did was to divide by 10.0 so we get a double:
slider.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent event) {
if (!slider.getValueIsAdjusting()) {
double v = slider.getValue() / 10.0;
System.out.println("value: "+v);
}
}
});