首页 > 其他分享 >DialogPane对话框布局

DialogPane对话框布局

时间:2024-06-22 17:22:22浏览次数:20  
标签:设置 对话框 DialogPane 布局 dialogPane Dialog 按钮

JavaFX 的 DialogPane 是一个用于创建对话框的控件,它是 Dialog 类内容部分的根节点。DialogPane 提供了一个灵活的方式来自定义对话框的内容和行为。

以下是 DialogPane 的一些基本用法:

  1. 构造函数DialogPane 可以通过多种构造函数创建,可以指定标题、头部、内容和扩展按钮。

  2. 标题和头部:使用 setTitlesetHeaderText 方法来设置对话框的标题和头部文本。

  3. 内容设置:使用 setContent 方法来设置对话框的主要内容。

  4. 按钮:使用 getButtonTypesbuttonTypesProperty 来添加或设置对话框的按钮类型。

  5. 结果:使用 Dialog 类的 showAndWait 方法来显示对话框,并等待用户操作。用户操作的结果可以通过 Dialog 类的 getResult 方法获取。

  6. 事件处理:可以为按钮添加事件处理程序来响应用户的点击事件。

下面是一个 DialogPane 的使用案例,演示了如何使用 DialogPane 来创建一个简单的确认对话框:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.DialogPane;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class DialogPaneDemo extends Application {

    @Override
    public void start(Stage primaryStage) {
        // 创建 DialogPane 实例
        DialogPane dialogPane = new DialogPane();

        // 设置标题和头部文本
        dialogPane.setHeaderText("Confirm Action");
        dialogPane.setContentText("Are you sure you want to proceed?");

        // 创建确认和取消按钮
        ButtonType confirmButtonType = new ButtonType("Confirm", ButtonBar.ButtonData.OK_DONE);
        ButtonType cancelButtonType = new ButtonType("Cancel", ButtonBar.ButtonData.CANCEL_CLOSE);
        dialogPane.getButtonTypes().addAll(confirmButtonType, cancelButtonType);

        // 设置对话框的按钮
        dialogPane.lookupButton(confirmButtonType).addEventFilter(ActionEvent.ACTION, event -> {
            System.out.println("Confirmed");
        });
        dialogPane.lookupButton(cancelButtonType).addEventFilter(ActionEvent.ACTION, event -> {
            System.out.println("Cancelled");
        });

        // 创建一个垂直布局的面板作为对话框的内容
        VBox vbox = new VBox(10); // 间距为10
        dialogPane.setContent(vbox);

        // 创建一个 Dialog 实例并设置 DialogPane
        Scene scene = new Scene(dialogPane, 300, 200);
        Dialog<ButtonType> dialog = new Dialog<>();
        dialog.getDialogPane().setContent(dialogPane);
        dialog.initOwner(primaryStage);
        dialog.initModality(Modality.APPLICATION_MODAL);

        // 显示对话框
        dialog.showAndWait().ifPresent(result -> {
            if (result == confirmButtonType) {
                System.out.println("User clicked confirm.");
            } else {
                System.out.println("User clicked cancel.");
            }
        });
    }

    public static void main(String[] args) {
        launch(args);
    }
}

在这个例子中,我们创建了一个 DialogPane 并设置了标题和头部文本。然后,我们添加了两个按钮类型(确认和取消)到对话框,并为这些按钮设置了事件处理程序。我们还创建了一个 VBox 作为对话框的内容,并将其设置到 DialogPane 中。

接着,我们创建了一个 Dialog 实例,并将 DialogPane 设置为对话框的内容。我们设置了对话框的所有者和模态性,然后调用 showAndWait 方法来显示对话框,并等待用户操作。

运行这个程序,你会看到一个确认对话框,用户可以选择确认或取消操作。根据用户的选择,控制台将打印相应的消息。

标签:设置,对话框,DialogPane,布局,dialogPane,Dialog,按钮
From: https://www.cnblogs.com/zllw946/p/18262521

相关文章

  • FlowPane流式布局
    JavaFX的FlowPane是一种流式布局的面板,它能够自动将子节点排列成多行或多列,当一行或一列填满后,会自动换行或换列。FlowPane非常适合用来创建动态的、可适应不同窗口大小的布局。以下是FlowPane的一些基本用法和特性:排列方向:FlowPane默认的排列方向是水平的,子节点会从左......
  • AnchorPane锚点布局
    JavaFX的AnchorPane是一种布局方式,允许你通过指定锚点来定位子节点。锚点是相对于父节点边缘的位置,你可以使用这些锚点来控制子节点的位置和大小。AnchorPane非常适合用来创建复杂的布局,其中组件的位置需要相对于其他组件或父容器的边缘进行定位。以下是AnchorPane的一些基......
  • BorderPane边框布局
    JavaFX的BorderPane是一种布局方式,它将容器分为五个区域:顶部(top)、底部(bottom)、左侧(left)、右侧(right)和中心(center)。每个区域可以放置一个节点,中心区域可以放置任意类型的节点,而其他四个区域通常放置较小的控件或组件。以下是BorderPane的一些基本用法:区域设置:使用setTop......
  • 第二讲 常见布局及控件
    第二讲常见布局及控件一.RelativeLayout格式:android:layout_二.线性布局 layout_width不要设置wrap_content没有用layout_weight是每个控件占权重线性布局默认水平显示选择题:1.在下列选项中,用于给Activity指定主题的属性是(C)A、iconB、labelC、themeD、style分......
  • qt开发-08_layout 布局
    Qt提供了非常丰富的布局类,基本布局管理类包括:QBoxLayout、QGridLayout、QFormLayout和QStackedLayout。这些类都从QLayout继承而来,它们都来源于QObject(而不是QWidget)。创建更加复杂的布局,可以让它们彼此嵌套完成。其中QBoxLayout提供了水平和垂直的布局管理;QFormLa......
  • fyne的VBox布局
    fyne的VBox布局最常用的布局是layout.BoxLayout,它有两种变体,水平和垂直。box布局将所有元素排列在单行或单列中,并带有可选的空格以帮助对齐。一步一步实现一个如下界面布局,这个界面可以使用VBox布局来实现。代码1packagemainimport( "fyne.io/fyne/v2" "fyne.io/......
  • fyne的border布局02
    border布局02边框布局可能是最广泛用于构建用户界面的布局,因为它允许将项目定位在中心元素周围,而中心元素将扩展以填充空间。实现如下一个界面布局:实现代码如下:packagemainimport( "edgevpndemo/resources" "fyne.io/fyne/v2" "fyne.io/fyne/v2/app" "fyne.i......
  • 【vue】可视化大屏实现固定比例布局(不错位)
    背景最初方案是使用dataV中的大屏自适应组件,后续发现dataV在不同显示器分辨率下的效果会不一致导致图表内容错位等问题;后续查找资料重新写自适应。组件封装resizeMixin.js//*默认缩放值constscale={width:'1',height:'1',};//*设计稿尺寸(px)cons......
  • Web应用课 2.4 CSS——flex、响应式布局
    flex布局主轴方向flex-directionCSSflex-direction属性指定了内部元素是如何在flex容器中布局的,定义了主轴的方向(正方向或反方向)。/*文本排成行的方向*/flex-direction:row;/*类似于<row>,但方向相反*/flex-direction:row-reverse;/*文本排成列的方向*/f......
  • 以前功能正常的代码突然出现布局问题
    我的网站使用相同的CSS文件已超过十年,从未出现过任何问题,但大约24小时前,我的网站布局出现了乱码,尽管我只是为我试图用于大写字母的新图片添加了一个单独的类,迄今为止我只在一个页面上进行了测试,但整个网站(每个页面)都出现了乱码,即使我恢复了原始CSS文件且未做任何新的修改,情......