My JFrame window has system look and feel and when I add a JSlider and click on its line, it just goes 90 steps forward or backward depending on my mouse position. I want the diamond to go under my mouse and work as if I clicked and dragged on the diamond.
Here is a minimal program but I think this only happens in Windows because in default look and feel, it didnt snap to 90th numbers but only went ahead one number.
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JSlider;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
@SuppressWarnings("serial")
public class Test extends JFrame {
int value = 300;
JSlider slider;
JLabel label;
public Test() {
setSize(300, 200);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLocationRelativeTo(null);
label = new JLabel(String.valueOf(value));
slider = new JSlider();
slider.setMinimum(100);
slider.setMaximum(1000);
slider.setValue(value);
slider.setSnapToTicks(false);
slider.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
label.setText(String.valueOf(slider.getValue()));
}
});
add(label, BorderLayout.NORTH);
add(slider);
setVisible(true);
}
public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, UnsupportedLookAndFeelException {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
new Test();
}
}