Peringatan JavaFX tidak dapat memuat konten

Saya telah mencoba menampilkan string besar sebagai Peringatan namun tidak berhasil.

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();
}

Pertama saya mencoba dengan setContentText() dan tidak menampilkan seluruh string. Lalu saya menggunakan alert.getDialogPane().setContent(new Label(body)); - namun kotak peringatan menjadi lebih lebar dari ukuran layar. Kemudian saya mencoba memfilter String menambahkan karakter baris baru dan mengatur maxWidth ke peringatan tetapi pemfilteran tidak berhasil.


person Robert    schedule 02.05.2017    source sumber
comment
Mungkin ini bisa membantu: stackoverflow.com/questions/28937392/   -  person Mark    schedule 02.05.2017
comment
Gunakan dialog pengecualian dari di sini.   -  person Sedrick    schedule 02.05.2017


Jawaban (1)


Untuk teks yang panjang, sebaiknya Anda menyajikannya di TextArea:

TextArea textArea = new TextArea(text);
textArea.setPrefColumnCount(40);
textArea.setPrefRowCount(20);
textArea.setEditable(false);
textArea.setWrapText(true);
alert.getDialogPane().setContent(textArea);
person VGR    schedule 02.05.2017
comment
Ini berfungsi tetapi saya menggunakan satu contoh objek Peringatan untuk beberapa peringatan. Ketika saya ingin menghapus area teks dari panel dialog saya tidak dapat menambahkan setContentText() apa pun - person Robert; 02.05.2017
comment
Jika Anda menelepon getDialogPane().setContent(null) terlebih dahulu, Anda kemudian dapat menelepon setContentText. Aturan untuk prioritas ini dijelaskan dalam dokumentasi untuk contentText. - person VGR; 02.05.2017