2015-03-02 92 views
0

我在尋找如何設置外部應用程序窗口上的標籤文本。Java(JFace應用程序窗口)設置外部標籤文本

我有什麼:

我有兩個窗口至今。第一個是用戶啓動程序時將出現的主應用程序窗口。第二個窗口是另一個獨立的窗口,我創建了特別是以顯示自定義錯誤窗口。

問題:我似乎無法調用我在錯誤窗口上創建的標籤,並將文本設置爲自定義。爲什麼?我想多次重複使用這個窗口!這個窗口的目的是在輸入無效或應用程序無法讀取/保存到文件時進行錯誤處理。

我要發佈屏幕截圖,但你需要10個代表。它會更好地解釋一切。

下面是ERROR_DIALOG窗口上的標籤代碼:

Label Error_label = new Label(container, SWT.NONE); 
Error_label.setBounds(10, 10, 348, 13); 
Error_label.setText("Label I actively want to change!"); 

這裏是條件,我想斷火時,它滿足:

if(AvailableSpaces == 10){ 
//Set the label text HERE and then open the window! 
    showError.open(); 
} 

在我已經包含了這該類的頂部以及:

Error_dialog showError = new Error_dialog(); 
+0

「無法找到標籤」是什麼意思? – 2015-03-02 20:34:35

+0

@ greg-449例如,設置諸如窗口狀態之類的東西,你可以輸入showError.setStatus(「Hello World!」);我怎麼能打電話給標籤呢?我想調用標籤並從主應用程序窗口設置文本。 – 2015-03-02 20:38:37

回答

0

只需將標籤保存爲對話框類中的字段並添加'setter'm ethod。喜歡的東西:

public class ErrorDialog extends Dialog 
{ 
    private Label errorLabel; 

    ... other code 

    public void setText(String text) 
    { 
    if (errorLabel != null && !errorLabel.isDisposed()) { 
     errorLabel.setText(text); 
    } 
    } 

您需要使用您的對話是這樣的:

ErrorDialog dialog = new ErrorDialog(shell); 

dialog.create(); // Creates the controls 

dialog.setText("Error message"); 

dialog.open(); 

注意:你應該堅持對Java變量名的規則 - 他們總是以小寫開頭。

進一步學習使用Layouts。如果用戶使用不同的字體,則使用setBounds會導致問題。

+0

謝謝你的回答。我還沒有時間去嘗試。也謝謝你指出我的變量名。我會改變這些,因爲我經常忘記什麼是什麼。我**應該嘗試更經常地堅持文檔。它有時可能真的很無聊,而且囉嗦... – 2015-03-09 11:47:46

+0

我還想指出,這個應用程序不會看到白天的光芒。這只是一個實驗性應用程序。我知道任何其他的佈局都比絕對的好......我只是不能爲那些只會添加到檔案中的東西而煩惱。 – 2015-03-09 12:00:14