如何读取 JSlider 的值?
我在程序中使用 slider ,这是我以前没有使用过的东西,但我正在努力显示对其所做的更改!
问题是,当您打开程序时,JLabel
显示 slider 的值 (50),但当您更改该值时,标签不会显示。
这是代码:
设置 slider (在 setUpMenuItems 类中):
sensitivitySlider2 = new JSlider();//direction , min , max , current
sensitivitySlider2.setFont(new Font("Calibri",Font.BOLD,10));
sensitivitySlider2.setMajorTickSpacing(10);
sensitivitySlider2.setMinorTickSpacing(1);
sensitivitySlider2.setPaintLabels(true);
sensitivitySlider2.setPaintTicks(true);
sensitivitySlider2.setPaintTrack(true);
sensitivitySlider2.setAutoscrolls(true);
sensitivitySlider2.setBackground(Color.WHITE);
sensitivitySlider2.setBounds (15,200,250,100);
propertiesPanel.add(sensitivitySlider2);
建立监听器:
private void registerComponentsForEvents()
{
// Register all the JButton objects for action events
miniButton.addActionListener (this);
applyButton.addActionListener (this);
exitButton.addActionListener (this);
sensitivitySlider2.addChangeListener(this);
}
窗口监听器和声明方法以使其具体化:
void addWindowListener(Window w) {
w.addWindowListener(this);
}
//React to window events.
public void windowOpened(WindowEvent e) {
}
public void windowClosing(WindowEvent e) {
}
public void windowClosed(WindowEvent e) {
}
public void windowActivated(WindowEvent e) {
}
public void windowDeactivated(WindowEvent e) {
}
public void windowDeiconified(WindowEvent e) {
}
public void windowIconified(WindowEvent e) {
}
更改事件:
public void stateChanged(ChangeEvent e) {
JSlider source = (JSlider)e.getSource();
if (!source.getValueIsAdjusting()) {
int sleepSense = (int)source.getValue();
}
}
然后这一行将 JLabel 设置为值:
sleepSense2 = String.valueOf(sleepSense);
最佳答案
这是一个老话题,但是,我会分享我的想法。
我相信您不需要像这样编写以下代码来获取值。 (使用if语句)
if (!source.getValueIsAdjusting()) {
int sleepSense = (int)source.getValue();
您可以满足以下条件
JSlider mySlider= new JSlider();
mySlider.addChangeListener(new ChangeListener(){
public void stateChanged(ChangeEvent e) {
int sleepSense = mySlider.getValue();
}
然后您可以在程序中的任何位置使用值“sleepSense”。
关于java - 读取 JSlider 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16586867/