我之前曾问过这个问题,但似乎无法对其进行编辑,但是现在我对如何执行此操作有了更多的了解,但它不起作用。

我已经初始化了LabelledSlider,并将默认值设置为int speedValue,它在构造函数中分配为1。

final   LabelledSlider speed = new LabelledSlider("Sim speed", 1, 7, speedValue);


加载程序后,滑块为1,但是当我调用将值5分配给speedValue的动作侦听器加载时,滑块仍然保持1,并且在运行程序时不会增加。

loadButton.addActionListener(new ActionListener()
    {
        public void actionPerformed(ActionEvent e)
        {
            speedValue = 1;
        }
    });


谁能解释为什么什么都没发生并可能提供解决方案?我也有动作监听器来保存滑块值,效果很好。

谢谢

最佳答案

您的代码显示了神奇的思维,您假设当您更改用于设置JSlider初始状态的原始变量的值speedValue时,JSlider的状态将发生神奇的变化。 Java无法以这种方式工作,如果您想更改JSlider的状态,则必须在其上调用一个显式执行此操作的方法:

slider.setValue(...);


因此,无论您想更改JSlider的值,都需要在适当的JSlider引用上调用此方法。

您将要顺便删除其他重复的问题。

10-01 02:09