1

以下に changeListener のコードをいくつか示します。基本的に、Voltage 変数の値を、JSlider が現在配置されている値に設定する必要があります。したがって、スライダーが 5 の場合、変数 Voltage は 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;
    }
4

2 に答える 2

1

あなたのメソッドはスライダーに変更リスナーを追加していますが、実際には値を取得していません。返される値は、Voltage変数に割り当てられた値です。これは、クラスのフィールドであると想定しています。

于 2013-02-04T21:24:19.017 に答える
1

voltage電圧を取得するには、スライダーから値を「プル」する方法と、リスナーを使用して変数に値を「プッシュ」する方法の 2 つを混合しているようです。

Marcelo が指摘したように、あなたのコードは、ChangeListener呼び出されるたびにスライダーに new をアタッチしますが、リスナーが実際に値を設定voltageするのを待たずに、変数に現在バインドされている値をすぐに返します。

代わりに、次のいずれかを試してください。

  1. スライダーChangeListenerの作成時に をスライダーにアタッチし、リスナーにvoltage変数の値を設定させます。この場合、getVoltageFromSliderメソッドは必要ありません。
  2. または、ゲッターを使用して (または単に を呼び出しsliders.voltageSlider.getValue()て)、必要に応じてスライダーの値を取得します。この場合、リスナーは必要ありません。

ただし、私の提案は、voltage変数が常に最新であるため、リスナーに固執することです。Voltage = (double) event.getSource()イベントのソースは JSlider 自体であるため、例外が発生します。

于 2013-02-04T21:44:04.693 に答える