JavaFX对话框控件-TextInputDialog
- 与Alert大部分功能类似
- 按钮不可以自定义
- 多一个输入框
常用属性
title
弹出框标题,标题太长会把超长部分截取,后面加上
……
dialog.setTitle("标题");
contentText
弹出框内容,内容太多,不会被截取,会把弹出框撑变形
dialog.setContentText("内容信息");
initOwner
设置弹框的所有者,用于确定对话框的位置和模式
dialog.initOwner(stage);
graphic
设置弹出框的小图标,否则会采用AlertType默认图标
dialog.setGraphic(new ImageView("icon.png"));
headerText
设置弹框的头部信息,否则会使用AlertType默认信息
dialog.setHeaderText("headerText信息");
defaultValue
弹框中输入框的默认值
TextInputDialog dialog = new TextInputDialog("默认值");
dialogPane
获取 Alert 的内部 DialogPane,允许进一步定制对话框的布局和内容,其中最重要的是
expandableContent
TextArea textArea = new TextArea("展开显示详细内容");
textArea.setEditable(false);
textArea.setWrapText(true);
textArea.setMaxWidth(Double.MAX_VALUE);
textArea.setMaxHeight(Double.MAX_VALUE);
dialog.getDialogPane().setExpandableContent(textArea);
常用事件
显示事件setOnShowing
dialog.setOnShowing((e) -> {
System.out.println(e.getEventType() + " ->" + e.getSource().getClass() + " -> " + e.getTarget().getClass());
});
显示事件setOnShown
dialog.setOnShown((e) -> {
System.out.println(e.getEventType() + " ->" + e.getSource().getClass() + " -> " + e.getTarget().getClass());
});
弹框按钮点击
Optional<String> optional = dialog.showAndWait();
System.out.println(optional.orElse("无"));
综合案例
public static Parent demo1(Window owner) {
FlowPane flowPane = new FlowPane();
flowPane.setHgap(10);
flowPane.setVgap(10);
flowPane.setOrientation(Orientation.VERTICAL);
Button button1 = new Button("demo1");
button1.setOnMouseClicked((event) -> {
if (MouseButton.PRIMARY.equals(event.getButton())) {
TextInputDialog dialog = new TextInputDialog();
dialog.initOwner(owner);
dialog.setTitle("title信息");
dialog.setHeaderText("headerText信息");
dialog.setContentText("contentText信息");
dialog.setGraphic(new ImageView("icon.png"));
TextArea textArea = new TextArea("展开显示详细内容");
textArea.setEditable(false);
textArea.setWrapText(true);
textArea.setMaxWidth(Double.MAX_VALUE);
textArea.setMaxHeight(Double.MAX_VALUE);
dialog.getDialogPane().setExpandableContent(textArea);
dialog.setOnShowing((e) -> {
System.out.println(e.getEventType() + " ->" + e.getSource().getClass() + " -> " + e.getTarget().getClass());
});
dialog.setOnShown((e) -> {
System.out.println(e.getEventType() + " ->" + e.getSource().getClass() + " -> " + e.getTarget().getClass());
});
Optional<String> optional = dialog.showAndWait();
System.out.println(optional.orElse("无"));
}
});
flowPane.getChildren().add(button1);
return flowPane;
}