2016-02-29 42 views
4

如何在警報對話框中設置wraptext選項?我試圖這樣做:JavaFx - 在警報撥號中包裝內容文本

Alert alert = new Alert(Alert.AlertType.CONFIRMATION); 
    alert.getButtonTypes().set(0, ButtonType.NO); 
    alert.getButtonTypes().set(1, ButtonType.YES); 
    alert.getDialogPane().getStylesheets().add("/styles/style.css"); 
    alert.setGraphic(new ImageView(getIcon(icon))); 
    Label lb = (Label) alert.getDialogPane().getChildren().get(1); 
    lb.setWrapText(true); //Attempt to set wrapText option 
    alert.setTitle(title); 
    alert.setHeaderText(header); 
    alert.setContentText(content); 

但它不起作用。

回答

3

創建一個新的標籤來代替,並設置它作爲DialogPane內容:

Label label = new Label("Label with\nText that should be wrapped."); 
label.setWrapText(true); 
alert.getDialogPane().setContent(lb); 

記住WrapText只有包裝上結束字符(\ n)的線,而不是自動。

如果你想自動換行,用Text元素代替,並設置WrappingWidth屬性:

Text text = new Text("Very long text that should be wrapped in the dialog"); 
text.setWrappingWidth(100); 
alert.getDialogPane().setContent(text); 
0

我覺得很沮喪,必須鍵入了這一切,並以文字不提供任何填充,所以我用這樣的事情,從實用的lib:

public static Alert createAlert(Alert.AlertType type, String message) { 
    Alert alert = new Alert(type); 

    StringBuilder sb = new StringBuilder(message); 
    for (int i = 0; i < message.length(); i += 200) { 
     sb.insert(i, "\n"); 
    } 

    Label t = new Label(sb.toString()); 
    alert.getDialogPane().setContent(t); 
    return alert; 
} 

這使得它更合理的使用方法:

Alert alert = FxUtil.createAlert(Alert.AlertType.ERROR, ex.getMessage()); 
alert.show(); 

這會是很好,如果它沒有自動像這樣...切斷這種性質的信息是相當無用:

我收到一條錯誤消息。它說:「解析行號錯誤...」任何想法出了什麼問題?