【问题标题】:How can I update a java LabelledSlider default value by assigning values to its variable?如何通过为变量赋值来更新 java LabelledSlider 默认值?
【发布时间】:2014-05-10 12:43:36
【问题描述】:

我之前问过这个问题,但我似乎无法编辑它,但现在我对如何做到这一点有了更多的想法,但它不起作用。

我已经初始化了一个 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;
        }
    });

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

谢谢

【问题讨论】:

    标签: java swing user-interface slider


    【解决方案1】:

    您的代码显示了神奇的思维,您假设当您更改用于设置 JSlider 初始状态的原始变量 speedValue 的值时,JSlider 的状态将神奇地改变。 Java 不是这样工作的,如果你想改变 JSlider 的状态,你将不得不调用一个明确地这样做的方法:

    slider.setValue(...);
    

    因此,无论您希望更改 JSlider 的值,您都需要在相应的 JSlider 引用上调用此方法。

    顺便说一句,您需要删除其他重复的问题。

    【讨论】:

    • 是的,我已经完成了。奇怪的是我以前不能。无论如何,关于解决方案,即使有一个 JSlider 字段存储在 LabelledSlider 中,它也不会让我访问该字段,除非我将其更改为默认值(当前没有私有)或 get 方法,所以它应该可以工作如果我只是这样做。谢谢!
    • @Sanjax:然后使用公共方法允许外部类设置对象的滑块值。
    猜你喜欢
    • 1970-01-01
    • 2017-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-16
    • 2019-08-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多