2014-03-13 125 views
0

1.嘗試在彈出窗口中顯示異常消息。異常消息未顯示。彈出窗口標籤未加載

2.Eg:當我點擊按鈕的彈出窗口(二FXML文件)是在標籤

3.Popup窗口出現在用正確的異常信息加載,但標籤沒有加載(加粗一個 - >ExceptionLabel.setText(「請輸入正確的文件路徑」))它說空指針異常。

4.我不知道我缺少什麼。同樣在FX:ID中聲明,也在第二個fxml文件中鏈接主控制器。提前致謝。

@FXML 
public Label ExceptionLabel; 
Stage PopupWindow = new Stage(); 

public void Buttonhandle(ActionEvent event) throws IOException { 
    try { 

     if(ESBOutboundFile!=null && OutputFile!=null){ 
     String Output = SBlogpaser.Logpaser(ESBInboundFile,ESBOutboundFile,OutputFile); 
     System.out.println(Output); 
     }else{ 
     Window(PopupWindow); 
     **ExceptionLabel.setText("Please enter Proper file path");** 

     } 
    } catch (Exception ex) { 
     System.out.println(ex); 
    } 

} 

public void Window(Stage Popup) throws Exception { 
    this.Popup=Popup; 
    final FXMLLoader fxmlLoader = new FXMLLoader(); 
    Parent root= fxmlLoader.load(getClass().getResource("POPUPWindow.fxml"));    
    Scene scene1 = new Scene(root); 
    Popup.setScene(scene1); 
    Popup.show();  
} 

Popup window without label

如果我保持標籤中得到顯示爲 「OK」 按鈕,手柄。

回答

1

從哪裏開始想要ExceptionLabel被實例化?

假設您將POPUPWindow.fxml文件根目錄的fx:controller屬性指向當前類,它將只創建該類的新實例,並將值注入該實例。當前實例中的字段ExceptionLabel將不會被初始化。

你很可能只是由FXMLLoader的控制器設置爲當前對象,像這樣的東西,使這項工作:

public void window(Stage popup) throws Exception { 
    this.popup=popup; // why? 
    final FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("POPUPWindow.fxml")); 
    fxmlLoader.setController(this); 
    Parent root= fxmlLoader.load();    
    Scene scene1 = new Scene(root); 
    popup.setScene(scene1); 
    popup.show();  
} 

,然後取下FX:從POPUPWindow.fxml控制器屬性。

雖然這似乎是一個非常糟糕的主意,因爲現在當前對象充當兩個不同FXML文件的控制器。這最好會令人困惑,而且在相當合理的條件下會產生奇怪的結果。這將是更好的編寫彈出不同的控制器類:

public class PopupController { 
    private final String message ; 
    @FXML 
    private Label exceptionLabel ; 

    public PopupController(String message) { 
    this.message = message ; 
    } 

    public void initialize() { 
    exceptionLabel.setText(message); 
    } 
} 

,然後用上面的窗口(...)方法,但

fxmlLoader.setController(new PopupController("Please enter Proper file path")); 

很顯然,如果你重用窗口(..)方法,您可能想要將該消息作爲參數傳遞給該方法。

+0

仍然無法正常工作....... – mani

+0

您使用了PopupController方法,並且exceptionLabel仍然爲空? –

+0

這次更好沒有例外,但消息沒有得到顯示..代碼正確調用popupcontroller,但它沒有傳遞給公共無效initialize()方法。如果手動調用它將引發標籤設置文本的空指針異常 – mani