Java 我的ChangeListener怎么了

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

下面我有一些changeListener的代码。基本上,我需要将电压变量的值设置为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;
    }

您的方法是向滑块添加更改侦听器,而不是实际检索值。您返回的值是分配给
Voltage
变量的值,我假定该变量是您的类的字段

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

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

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

  • 创建滑块时,将
    changeStener
    附加到滑块上,并让侦听器设置
    voltage
    变量的值。在这种情况下,不需要使用
    getVoltageFromSlider
    方法
  • 或者使用getter(或者只需调用
    sliders.voltageSlaider.getValue()
    )根据需要检索滑块的值。在这种情况下,不需要侦听器

  • 然而,我的建议是坚持听录音,因为这样,
    voltage
    变量总是最新的。并删除行
    Voltage=(double)event.getSource()
    ,因为事件的源是JSlider本身,这将导致异常。

    您的问题中没有JavaScript。
    stateChanged
    中的第一行不会导致异常吗
    event.getSource()
    应该在JSlider实例中使用。要更快获得更好的帮助,请发布一个。每次程序询问电压时,都会添加另一个侦听器。这本身似乎是一个错误。我需要/需要做什么更改,以便它检索滑块上的值,并将该值分配给可变电压,而不是添加一个简单的更改侦听器?