Добавить полосу прокрутки в оповещение - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть ситуация, при которой я должен вывести огромную строку в javafx Alert

 public static Optional<ButtonType> showAlertDialog(AlertType type, String title, String content) {
    TextArea textArea = new TextArea(content);
    textArea.setEditable(false);
    textArea.setWrapText(true);
    GridPane gridPane = new GridPane();
    gridPane.setMaxWidth(Double.MAX_VALUE);
    gridPane.add(textArea, 0, 0);

    Alert alert = new Alert(type);
    alert.setTitle(title);

    alert.setContentText(content);
    return alert.showAndWait();
}

когда размер строки превышает размер экрана, я не могу прочитать скрытую часть строки, как я могу добавить Scrollbar к Alert

1 Ответ

0 голосов
/ 01 ноября 2018

В настоящее время вы не добавляете TextArea или GridPane к Alert. Вы создаете их, но затем ничего не делаете с ними; вместо этого вы просто устанавливаете contentText из Alert. Вам действительно нужно добавить TextArea со встроенной прокруткой к Alert.

Один из способов сделать это - установить свойство DialogPane.content вместо свойства contentText.

private Optional<ButtonType> showAlert(AlertType type, String title, String content) {
  Alert alert = new Alert(type);
  alert.setTitle(title);

  TextArea area = new TextArea(content);
  area.setWrapText(true);
  area.setEditable(false);

  alert.getDialogPane().setContent(area);
  alert.setResizable(true);

  return alert.showAndWait();
}

Другой способ - добавить TextArea в качестве expandableContent и сделать contentText более коротким сообщением.

private Optional<ButtonType> showAlert(AlertType type, String title, String shortMessage, String fullMessage) {
  Alert alert = new Alert(type);
  alert.setTitle(title);
  alert.setContentText(shortMessage);

  TextArea area = new TextArea(fullMessage);
  area.setWrapText(true);
  area.setEditable(false);

  alert.getDialogPane().setExpandableContent(area);

  return alert.showAndWait();
}
...