java JSlider捕捉到每90个数字
我的JFrame窗口具有系统外观,当我添加一个JSlider并点击它的线条时,它只向前或向后移动90步,这取决于我的鼠标位置。我想让钻石进入我的鼠标下,就像我点击并拖动钻石一样工作
这是一个最小的程序,但我认为这只发生在Windows中,因为在默认的外观中,它没有捕捉到第90个数字,而是只前进了一个数字
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();
}
}
# 1 楼答案
本例基于此answer进行了轻微修改,删除/添加了MouseMotionListener和MouseListener,使拇指滑块的绘制更符合默认行为。现在,拖动拇指时,拇指将绘制在与鼠标相同的相对位置,而不是左侧