我之前曾问过这个问题,但似乎无法对其进行编辑,但是现在我对如何执行此操作有了更多的了解,但它不起作用。
我已经初始化了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引用上调用此方法。
您将要顺便删除其他重复的问题。