簡體   English   中英

Java Jlabel-使用setText時不顯示文本

[英]Java Jlabel - not displaying text when using setText

修改lblError時,我正在使用設置文本。 它在我的try catch語句中正常工作。 但是當我運行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);
    }

然后要么1)從不調用else語句,要么2)您正在與顯示的JLabel對象不同的JLabel對象上調用該方法。

要測試第一個,請執行以下操作:

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

要測試第二個實例,請檢查並確保沒有創建包含JLabel的類的另一個實例。

否則,如果您仍然遇到問題,請考慮向我們提供更多信息和代碼,因為我認為我們沒有足夠的能力完全自信地告訴您問題的原因是什么。

您不必只在可見標簽上調用setText()並使其立即生效- 特別是如果您不是從事件處理程序中調用它的話。 通常,如果您更改了屏幕上顯示的組件的外觀,則必須在組件上調用validate()以強制更新布局;否則,請執行以下操作。 如果空白標簽獲取新文本,則絕對需要這樣做。

編輯

@HovercraftFullOfEels也對其他可能出錯的地方提出了一些好的建議。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM