JavaFX的对话框

104 篇文章 5 订阅

JavaFX的对话框主要分为提示对话框(Alert)和文件对话框两类,其中提示对话框又分作消息对话框、警告对话框、错误对话框、确认对话框四种。这四种对话框都使用Alert控件表达,并通过对话框类型加以区分。

  • AlertType.NONE表示警报中设置任何默认属性。
  • AlertType.INFORMATION:表示消息对话框。
  • AlertType.WARNIN:表示警告对话框。
  • AlertType.ERROR:表示错误对话框。
  • AlertType.CONFIRMATION:表示确认对话框。

该类的构造函数是:

  • Alert(Alert.AlertType a):创建具有指定警报类型的新警报。
  • Alert(Alert.AlertType a, String c, ButtonType… b):创建具有指定警报类型,内容和按钮类型的新警报。

警报包含3个部分:

  • 标头
  • 内容文字
  • 确认按钮

另外,Alert提示对话框还提供了下列方法来操作对话框: 

方法说明
getAlertType设置指定的警报类型
setAlertType为警报设置指定的警报类型
getButtonTypes返回此Alert实例中当前设置的所有ButtonType实例的ObservableList。
setContentText设置警报的上下文文本
getContentText返回警报的内容文本。
setTitle设置对话框的标题
setHeaderText设置对话框的头部文本
setContentText设置对话框的内容文本
show显示对话框
showAndWait显示对话框,并等待按钮返回。该方法的返回类型是Optional<ButtonType>,它用来描述确认对话框选择的是确定按钮还是取消按钮

消息对话框:

// 创建一个按钮
Button btn1 = new Button("消息对话框"); 

// 设置按钮的单击事件
btn1.setOnAction(new EventHandler<ActionEvent>() {

    // 处理单击事件
    @Override
    public void handle(ActionEvent arg0) { 
        // 创建一个消息对话框
        Alert alert = new Alert(Alert.AlertType.INFORMATION);

        // 设置对话框的头部文本
        alert.setHeaderText("今日天气"); 
        // 设置对话框的内容文本
        alert.setContentText("今天白天晴转多云,北转南风2、3间4级,最高气温28℃;夜间多云转阴,南风2级左右,最低气温16℃。");

        // 显示对话框
        alert.show(); 
    }
});

// 往流式窗格上添加按钮
flowPane.getChildren().add(btn1);

 

警告对话框:

// 创建一个按钮
Button btn2 = new Button("警告对话框");

// 设置按钮的单击事件
btn2.setOnAction(new EventHandler<ActionEvent>() {

    // 处理单击事件
    @Override
    public void handle(ActionEvent arg0) {
        // 创建一个警告对话框
        Alert alert = new Alert(Alert.AlertType.WARNING);

        // 设置对话框的头部文本
        alert.setHeaderText("编译警告");

        // 设置对话框的内容文本
        alert.setContentText("您在本代码的第60行未初始化变量,可能导致空指针异常。");
        
        // 显示对话框
        alert.show();
    }
});

// 往流式窗格上添加按钮
flowPane.getChildren().add(btn2);

错误对话框:

// 创建一个按钮
Button btn3 = new Button("错误对话框"); 

// 设置按钮的单击事件
btn3.setOnAction(new EventHandler<ActionEvent>() {

    // 处理单击事件
    @Override
    public void handle(ActionEvent arg0) { 
        // 创建一个错误对话框
        Alert alert = new Alert(Alert.AlertType.ERROR); 

        // 设置对话框的头部文本
        alert.setHeaderText("致命错误"); 

        // 设置对话框的内容文本
        alert.setContentText("系统即将关机,请赶紧保存文件。");

        // 显示对话框
        alert.show(); 
    }
});

// 往流式窗格上添加按钮
flowPane.getChildren().add(btn3); 

 

确认对话框,它使用showAndWait方法替换了show方法:

// 创建一个按钮
Button btn4 = new Button("确认对话框");

// 设置按钮的单击事件
btn4.setOnAction(new EventHandler<ActionEvent>() { 

    // 处理单击事件
    @Override
    public void handle(ActionEvent arg0) {
        // 创建一个确认对话框
        Alert alert = new Alert(Alert.AlertType.CONFIRMATION);

        // 设置对话框的头部文本
        alert.setHeaderText("温馨提示"); 

        // 设置对话框的内容文本
        alert.setContentText("尊敬的用户,你真的要卸载我吗?");

        // 显示对话框,并等待按钮返回
        Optional<ButtonType> buttonType = alert.showAndWait();

        // 判断返回的按钮类型是确定还是取消,再据此分别进一步处理
        if (buttonType.get().getButtonData().equals(ButtonBar.ButtonData.OK_DONE)) { // 单击了确定按钮OK_DONE
            label.setText("您选择了“确定”按钮。虽然依依不舍,但是只能离开了");
        } else { // 单击了取消按钮CANCEL_CLOSE
            label.setText("您选择了“取消”按钮。让我再陪你三百六十五个日夜");
        }
    }
});

// 往流式窗格上添加按钮
flowPane.getChildren().add(btn4);

 

各自单击确认对话框上的确定按钮和取消按钮,对话框消失后的窗口界面分别如下面两张图所示:

文件对话框FileChooser,细分为文件打开对话框与文件保存对话框两种,FileChooser的常见方法说明如下:

方法说明
setTitle设置文件对话框的标题
setInitialDirectory设置文件对话框的初始目录
getExtensionFilters获得文件对话框的扩展过滤器。调用过滤器的add方法或者addAll方法可以添加新的文件类型过滤器
showOpenDialog显示文件打开对话框。该方法返回一个选中的文件对象
showOpenMultipleDialog显示文件打开对话框,且该对话框支持同时选择多个文件。该方法返回一个选中的文件清单
showSaveDialog显示文件保存对话框。该方法返回一个待保存的文件对象,文件可能存在也可能不存在

 文件对话框的运用场景,现在准备打开某张图片,以便对该图片进行加工。鉴于图片文件包含jpg、gif、bmp、png等多种格式,在创建文件类型过滤器时得添加主要的几种图片扩展名,下面便是打开图片的对话框调用代码例子:

Button btn1 = new Button("文件打开对话框"); // 创建一个按钮
btn1.setOnAction(new EventHandler<ActionEvent>() { // 设置按钮的单击事件

    @Override
    public void handle(ActionEvent arg0) { // 处理单击事件
        FileChooser chooser = new FileChooser(); // 创建一个文件对话框
        chooser.setTitle("打开文件"); // 设置文件对话框的标题
        chooser.setInitialDirectory(new File("E:\\")); // 设置文件对话框的初始目录
        // 给文件对话框添加多个文件类型的过滤器
        chooser.getExtensionFilters().addAll(
                new FileChooser.ExtensionFilter("所有文件", "*.*"),
                new FileChooser.ExtensionFilter("所有图片", "*.jpg", "*.gif", "*.bmp", "*.png"));
        // 显示文件打开对话框,且该对话框支持同时选择多个文件
        File file = chooser.showOpenDialog(stage); // 显示文件打开对话框
        if (file == null) { // 文件对象为空,表示没有选择任何文件
            label.setText("未选择任何文件");
        } else { // 文件对象非空,表示选择了某个文件
            label.setText("准备打开的文件路径是:"+file.getAbsolutePath());
        }
    }
});

flowPane.getChildren().add(btn1); // 往流式窗格上添加按钮

单击按钮后弹出的对话框如下图所示:

文件对话框中选择某个目录下的某个图片文件,此时对话框界面如下图所示:

单击确定按钮,回到主程序的窗口界面如下图所示,可见主程序成功获取到了该文件的完整路径:

文件保存对话框的使用过程,这次期望将一段文字保存到文本文件,那么具体实现的对话框代码如下所示:

Button btn2 = new Button("文件保存对话框"); // 创建一个按钮

btn2.setOnAction(new EventHandler<ActionEvent>() { // 设置按钮的单击事件

    @Override
    public void handle(ActionEvent arg0) { // 处理单击事件
        FileChooser chooser = new FileChooser(); // 创建一个文件对话框
        chooser.setTitle("保存文件"); // 设置文件对话框的标题
        chooser.setInitialDirectory(new File("E:\\")); // 设置文件对话框的初始目录
        // 创建一个文件类型过滤器
        FileChooser.ExtensionFilter filter = new FileChooser.ExtensionFilter("文本文件(*.txt)", "*.txt");
        // 给文件对话框添加文件类型过滤器
        chooser.getExtensionFilters().add(filter);
        File file = chooser.showSaveDialog(stage); // 显示文件保存对话框
        if (file == null) { // 文件对象为空,表示没有选择任何文件
            label.setText("未选择任何文件");
        } else { // 文件对象非空,表示选择了某个文件
            label.setText("准备保存的文件路径是:"+file.getAbsolutePath());
        }
    }
});

flowPane.getChildren().add(btn2); // 往流式窗格上添加按钮

单击按钮后弹出的对话框如下图所示:

文件对话框中进入到指定目录,并在对话框下方的文件名一栏填写待保存的文件名称,此时对话框界面如下图所示:

单击确定按钮,回到主程序的窗口界面如下图所示,可见主程序也获取到了该文件的完整路径:

  • 9
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaFX提供了许多对话框类型,包括警告对话框、错误对话框、确认对话框、文本输入对话框等等。这些对话框都是通过JavaFX的Dialog类创建的。 下面是一个简单的示例代码,展示了如何创建一个警告对话框: ```java Alert alert = new Alert(AlertType.WARNING); alert.setTitle("警告对话框"); alert.setHeaderText("警告内容"); alert.setContentText("这是一个警告信息"); alert.showAndWait(); ``` 在这个例子中,我们首先创建了一个Alert对象,并将其类型设置为WARNING。然后设置对话框的标题、头部信息和内容。最后调用showAndWait()方法来显示对话框。 除了警告对话框,还可以创建其他类型的对话框。例如,要创建一个确认对话框,可以将Alert的类型设置为CONFIRMATION,并设置对话框的标题、头部信息和内容。然后,可以使用showAndWait()方法来显示对话框,并根据用户的响应来进行相应的操作。 ```java Alert alert = new Alert(AlertType.CONFIRMATION); alert.setTitle("确认对话框"); alert.setHeaderText("确认内容"); alert.setContentText("您确认要执行此操作吗?"); Optional<ButtonType> result = alert.showAndWait(); if (result.get() == ButtonType.OK){ // 用户点击了“确认”按钮 } else { // 用户点击了“取消”按钮 } ``` 在这个例子中,我们使用了一个Optional<ButtonType>类型的对象来存储用户的响应。如果用户点击了“确认”按钮,那么就可以执行相应的操作;如果用户点击了“取消”按钮,就不需要执行任何操作。 总的来说,JavaFX对话框功能非常强大,可以帮助我们方便地实现各种对话框的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值