-1

lblErrorを変更するとき、私は設定されたテキストを使用しています。私のtrycatchステートメントでは問題なく機能しています。しかし、elseステートメントを実行していて、elseステートメントを入力すると...(チェックしました)setTextは、ラベルに希望のテキストを表示させません

このコードが実装されている場合は機能します。

try {
    Schedule newSched = ScheduleReader.read(text);
    for (int i = 0; i <= newSched.getLastFlightTime(); i++) {
        ArrayList<Flight> flightsAtTime = newSched.getFlights(i);

    for (Flight f : flightsAtTime) {
         s.add(f);
        }
    }
    flights= getArrayList(s);
    displaySchedule();
    lblError.setText("");

   } catch (IOException e1) {
    lblError.setText(IO_MESSAGE);
   } catch (FormatException e1) {
    lblError.setText(FORMAT_MESSAGE);
   } catch (DuplicateFlightException e1) {
    lblError.setText(DUPLICATE_FLIGHT_MESSAGE);
   }
}

しかし、私がそうするとき、それは機能しません:

 else{
        lblError.setText(FLIGHT_NOT_READY);
    }
4

2 に答える 2

2

次に、1) else ステートメントが呼び出されないか、2) 表示されているものとは異なる JLabel オブジェクトでメソッドを呼び出しています。

最初のものをテストするには、次のようにします。

else{
   System.out.println("else block called");
   lblError.setText(FLIGHT_NOT_READY);
}

2 番目をテストするには、JLabel を保持するクラスの 2 番目のインスタンスを作成していないことを確認してください。

それでも問題が解決しない場合は、より多くの情報とコードを提供することを検討してください。問題の原因が何であるかを完全に自信を持って伝えるには十分ではないと思います。

于 2012-05-25T00:36:03.097 に答える
1

特に、イベント ハンドラーから呼び出していない場合は特にsetText()、表示されているラベルを呼び出してすぐに有効にできるとは限りません。一般に、画面に表示されているコンポーネントの外観を変更する場合は、コンポーネントを呼び出してレイアウトを強制的に更新する必要があります。空のラベルが新しいテキストを取得する場合、これは間違いなく必要になります。validate()

編集

また、@HovercraftFullOfEels には、問題が発生している可能性があるその他の点についてもいくつかの良い提案があります。

于 2012-05-25T00:37:32.263 に答える