我以前问过这个问题,但我似乎无法编辑它,但现在我对如何做到这一点有了更多的想法,但它不起作用。
我已经初始化了一个LabelledSlider,并使其默认值为int speedValue,该值在构造函数中被赋值为1。
final LabelledSlider speed = new LabelledSlider("Sim speed", 1, 7, speedValue);
加载程序时,滑块为1,但是当我调用动作监听器load时,它将值5赋给speedValue,滑块仍然保持1,并且在我运行程序时不增加。
loadButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
speedValue = 1;
}
});
谁能解释为什么没有发生,并可能提供一个解决方案?我也有动作监听器保存滑块值,工作得很好。
谢谢
您的代码显示了神奇的思维,您假设当您更改用于设置JSlider初始状态的原始变量speedValue的值时,JSlider的状态将神奇地发生变化。Java不是这样工作的,如果你想改变JSlider的状态,你将不得不在它上面调用一个显式执行以下操作的方法:
slider.setValue(...);
因此,无论您希望在何处更改JSlider的值,您都需要在适当的JSlider引用上调用此方法。
顺便说一下,你会想要删除其他重复的问题。