我在下面有一些changeListener的代码。基本上我需要将我的Voltage变量的值设置为我的JSlider当前所在的值。因此,如果我的滑块是5,那么我的变量电压将读为5.但是这不会发生,我不确定为什么。什么遗漏会将变量设置为具有我的JSlider所处的当前值?
public double getVoltageFromSlider() {
sliders.voltageSlider.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent event) {
Voltage = (double) event.getSource();
Voltage = sliders.voltageSlider.getValue();
}
});
return Voltage;
}
答案 0 :(得分:1)
您的方法是向滑块添加更改侦听器,它实际上并未检索该值。您返回的值是分配给Voltage
变量的值,我假设该变量是您的类的一个字段。
答案 1 :(得分:1)
看来你正在混合使用两种方法来获取电压:“拉出”滑块中的值,并使用监听器将值“推”到voltage
变量中。
正如Marcelo所指出的,你的代码所做的是每次调用时它都会向滑块附加一个新的ChangeListener
,但是会立即返回当前绑定到voltage
变量的值,而不是等待听众实际设置值。
相反,您应该尝试以下方法之一:
ChangeListener
附加到滑块,并让侦听器设置voltage
变量的值。在这种情况下,不需要getVoltageFromSlider
方法。sliders.voltageSlider.getValue()
)根据需要检索滑块的值。在这种情况下,听众不是必需的。然而,我的建议是坚持听众,因为这样voltage
变量始终是最新的。并删除行Voltage = (double) event.getSource()
,因为事件的来源是JSlider本身,这将导致异常。