0

シリアル通信で入ってくる値でリアルタイムグラフを作っています。「摂氏」値と呼ばれるデータが入ってきます。JLabel の GUI に表示しているので、値は常に変化します。私が抱えている問題は、JLabel の値を華氏に、または摂氏に戻すことができるボタンが必要なことです。だから今、私は updateTemp() メソッドを呼び出す actionPerformed を持っているので、プログラムが始まったらすぐに JLabel を更新します。変更する必要があると思われる3つのメソッドのコードを以下に示します。

public void actionPerformed(final ActionEvent e) {
    updateTempC();
    final Double n = serial.x;
    series.addOrUpdate(new Millisecond(), n);
    Object source = e.getSource();

    if (e.getSource() == buttonF){
     degree.setText("degrees F");
     updateTempF();
   }

    if (e.getSource() == buttonC){
     degree.setText("degrees C");
     updateTempC();
    }
}

public void updateTempF(){
    int step1;
    int step2;
    int step3;
    String indata = serial.temp;
    int temp = Integer.parseInt(indata);
    step1 = temp*9;
    step2 = step1/5;
    step3 = step2 + 32;
    String indata1 = Integer.toString(step3);
    this.realtime.setText(indata1);
}

public void updateTempC(){
    String indata = serial.temp;
    this.realtime.setText(indata);
} 

現在、JButton を押して華氏に変更すると、一瞬変化しますが、すぐに摂氏の表示に戻ります。これは、グラフが毎秒更新され、actionPerformed が updateTempC() の呼び出しに戻るためです。Fahr のボタンを押すとどうなるか気になります。またはCels.、残りの時間は変更されます。ありがとう

4

1 に答える 1

1

のような変数が必要ですboolean fahrenheitTempbuttonFをクリックするfahrenheitTempと に設定されtrueます。buttonCをクリックするfahrenheitTempと に設定されfalseます。である場合fahrenheitTemptrueを呼び出しupdateTempF()、そうでない場合は を呼び出しますupdateTempC()。(また、Object source変数がありますが、それを使用することはありません。)

あなたを次のように変更actionPerformed(ActionEvent)してみてください:

boolean fahrenheitTemp = false;
public void actionPerformed(final ActionEvent e) {
    if (fahrenheitTemp) {
        updateTempF();
    } else {
        updateTempC();
    }
    final Double n = serial.x;
    series.addOrUpdate(new Millisecond(), n);
    Object source = e.getSource();
    if (source == buttonF) {
        degree.setText("degrees F");
        fahrenheitTemp = true;
        updateTempF();
    } else if (source == buttonC) {
        degree.setText("degrees C");
        fahrenheitTemp = false;
        updateTempC();
    }
}
于 2013-03-10T17:01:17.440 に答える