如何通过为java LabelledSider的变量赋值来更新其默认值?
我以前问过这个问题,但我似乎无法编辑它,但现在我对如何做有了更多的想法,但它不起作用 我初始化了一个LabelledSlider,并将默认值设置为int speedValue,该值在构造函数中分配给1如何通过为java LabelledSider的变量赋值来更新其默认值?,java,swing,user-interface,slider,Java,Swing,User Interface,Slider,我以前问过这个问题,但我似乎无法编辑它,但现在我对如何做有了更多的想法,但它不起作用 我初始化了一个LabelledSlider,并将默认值设置为int speedValue,该值在构造函数中分配给1 final LabelledSlider speed = new LabelledSlider("Sim speed", 1, 7, speedValue); 加载程序时,滑块为1,但当我调用动作侦听器加载(将值5指定给speedValue)时,滑块仍为1,并且在运行程序时不会增加 load
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引用上调用此方法
顺便说一下,您想删除另一个重复的问题。是的,我已经删除了。奇怪的是,我以前不能。无论如何,关于解决方案,即使LabelledSlider中存储了一个JSlider字段,它也不允许我访问该字段,除非我将其更改为默认值(当前为非私有值)或get方法,因此如果我只是这样做,它应该可以工作。谢谢@Sanjax:然后使用公共方法允许外部类设置对象的滑块值。