Java 我的ChangeListener怎么了
下面我有一些changeListener的代码。基本上,我需要将电压变量的值设置为JSlider当前所处的值。所以,如果我的滑块是5,那么我的可变电压读数是5。然而,这并没有发生,我不确定为什么。缺少什么可以将变量设置为我的JSlider所在的当前值Java 我的ChangeListener怎么了,java,swing,jslider,changelistener,Java,Swing,Jslider,Changelistener,下面我有一些changeListener的代码。基本上,我需要将电压变量的值设置为JSlider当前所处的值。所以,如果我的滑块是5,那么我的可变电压读数是5。然而,这并没有发生,我不确定为什么。缺少什么可以将变量设置为我的JSlider所在的当前值 public double getVoltageFromSlider() { sliders.voltageSlider.addChangeListener(new ChangeListener() { public void stateC
public double getVoltageFromSlider() {
sliders.voltageSlider.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent event) {
Voltage = (double) event.getSource();
Voltage = sliders.voltageSlider.getValue();
}
});
return Voltage;
}
您的方法是向滑块添加更改侦听器,而不是实际检索值。您返回的值是分配给
Voltage
变量的值,我假定该变量是您的类的字段 似乎您混合了两种获取电压的方法:“从滑块中拉出”值,并使用侦听器将值“推”到电压变量中
正如Marcelo所指出的,您的代码所做的是,每次调用它时,它都会将一个新的ChangeListener
附加到滑块上,然后立即返回当前绑定到voltage
变量的值,而无需等待侦听器实际设置该值
相反,您应该尝试以下方法之一:
创建滑块时,将changeStener
附加到滑块上,并让侦听器设置voltage
变量的值。在这种情况下,不需要使用getVoltageFromSlider
方法
或者使用getter(或者只需调用sliders.voltageSlaider.getValue()
)根据需要检索滑块的值。在这种情况下,不需要侦听器
然而,我的建议是坚持听录音,因为这样,voltage
变量总是最新的。并删除行Voltage=(double)event.getSource()
,因为事件的源是JSlider本身,这将导致异常。您的问题中没有JavaScript。stateChanged
中的第一行不会导致异常吗event.getSource()
应该在JSlider实例中使用。要更快获得更好的帮助,请发布一个。每次程序询问电压时,都会添加另一个侦听器。这本身似乎是一个错误。我需要/需要做什么更改,以便它检索滑块上的值,并将该值分配给可变电压,而不是添加一个简单的更改侦听器?