IT干货网

JavaFX 警报无法容纳内容

softidea 2024年09月07日 编程设计 55 0

我一直在尝试将大字符串显示为警报,但未成功。

public void customAlert(String header, String body, ButtonType customBtn) { 
    clearAlert(); 
    alert.setHeaderText(header); 
    //alert.setContentText(body); 
    String content = ""; 
    int counter = 1; 
 
    int y=0; 
    for (int x = 0; x < body.length(); ++x) { 
     //    System.err.println("concat"); 
        if (x > counter * 50 && body.charAt(x) == ' ') { 
          //  System.err.println("concat"); 
            ++counter; 
            for (; y < x; ++y) { 
                content.concat(Character.toString(body.charAt(y))); 
 
            } 
            content.concat(Character.toString('\n')); 
           // System.err.println(content); 
        } 
    } 
    alert.getDialogPane().setContent(new Label(content)); 
 
    alert.getDialogPane().setMaxWidth(500); 
 
    if (customBtn != null) { 
        alert.getButtonTypes().clear(); 
        alert.getButtonTypes().add(customBtn); 
    } 
    alert.showAndWait(); 
} 

首先我尝试使用 setContentText(),但它没有显示整个字符串。然后我使用了alert.getDialogPane().setContent(new Label(body)); - 但警报框变得比屏幕尺寸更宽。然后我尝试过滤添加换行符的字符串并将 maxWidth 设置为警报,但过滤不起作用。

请您参考如下方法:

对于长文本,最好将其呈现在 TextArea 中:

TextArea textArea = new TextArea(text); 
textArea.setPrefColumnCount(40); 
textArea.setPrefRowCount(20); 
textArea.setEditable(false); 
textArea.setWrapText(true); 
alert.getDialogPane().setContent(textArea); 


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!