1

I have some code for a changeListener below. Basically I need to set the value of my Voltage variable to the value which my JSlider is currently positioned at. So if my slider was at 5 then my variable Voltage would read 5. However this does not happen and I am unsure why. Whats missing which would set the variable to have the current value that my JSlider is at?

public double getVoltageFromSlider() {

sliders.voltageSlider.addChangeListener(new ChangeListener() { 

 public void stateChanged(ChangeEvent event) {

                Voltage = (double) event.getSource();
                Voltage = sliders.voltageSlider.getValue();
            }
        });
        return Voltage;
    }
4

2 回答 2

1

您似乎正在混合两种获取电压的方法:从滑块“拉”值,并voltage使用侦听器将值“推”到变量中。

正如 Marcelo 所指出的,您的代码所做的是,它ChangeListener每次调用滑块时都会附加一个新滑块,但随后会立即返回当前绑定到voltage变量的值,而无需等待侦听器实际设置该值。

相反,您应该尝试以下方法之一:

  1. 在创建滑块ChangeListener时将 a 附加到滑块,并让侦听器设置voltage变量的值。在这种情况下,getVoltageFromSlider不需要该方法。
  2. 或者根据需要使用 getter(或只是调用sliders.voltageSlider.getValue())来检索滑块的值。在这种情况下,监听器不是必需的。

但是,我的建议是坚持使用侦听器,因为这样voltage变量始终是最新的。并删除该行Voltage = (double) event.getSource(),因为事件的来源是 JSlider 本身,这将导致异常。

于 2013-02-04T21:44:04.693 回答
1

您的方法是向滑块添加一个更改侦听器,它实际上并没有检索该值。您返回的值是分配给Voltage变量的值,我假设它是您的类的一个字段。

于 2013-02-04T21:24:19.017 回答