在对话框中的按钮下添加文本

千斤顶

我想知道是否有一种方法可以在“对话框”的按钮下显示一些文本(例如信息)?我已经看了很多地方,但即使对齐按钮看起来杂乱(从这个职位)。

这就是我现在得到的。我只想要2个按钮下的“设置我的选择...”文本。

对话简单

我在文档中寻找了一个函数,该函数可以帮助我getButtonBar()毫无困难地显示想要的方式(例如“ ”或类似的东西)。ButtonBar对于我想要实现的目标,还要创建一个新的东西似乎有些复杂。

我也尝试创建一个看起来像对话框的阶段,但是我需要以与Dialogs相同的方式通过单击“是/否”得到的结果。

有什么办法可以实现我想要的?还是我必须自己完全构建它?谢谢 !

詹姆斯_D

只需覆盖以下createButtonBar()方法DialogPane

DialogPane pane = new DialogPane() {
    @Override
    public Node createButtonBar() {
        VBox vbox = new VBox(5);
        vbox.setAlignment(Pos.BOTTOM_RIGHT);
        vbox.setPadding(new Insets(5));
        vbox.getChildren().add(super.createButtonBar());
        vbox.getChildren().add(new Label("Additional text"));
        return vbox ;
    }
};

这是一个SSCCE:

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ButtonType;
import javafx.scene.control.CheckBox;
import javafx.scene.control.Dialog;
import javafx.scene.control.DialogPane;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class CustomDialogPaneTest extends Application {

    @Override
    public void start(Stage primaryStage) {
        Button button = new Button("Show Dialog");
        button.setOnAction(e -> {
            DialogPane pane = new DialogPane() {
                @Override
                public Node createButtonBar() {
                    VBox vbox = new VBox(5);
                    vbox.setAlignment(Pos.BOTTOM_RIGHT);
                    vbox.setPadding(new Insets(5));
                    vbox.getChildren().add(super.createButtonBar());
                    vbox.getChildren().add(new Label("Additional text"));
                    return vbox ;
                }
            };

            CheckBox checkBox = new CheckBox("A check box");
            pane.setContent(checkBox);
            pane.setHeaderText("The header");
            pane.getButtonTypes().addAll(ButtonType.YES, ButtonType.NO);

            Dialog<ButtonType> dialog = new Dialog<>();
            dialog.setDialogPane(pane);
            dialog.showAndWait().ifPresent(System.out::println);
        });

        StackPane root = new StackPane(button);
        root.setPadding(new Insets(20));
        primaryStage.setScene(new Scene(root));
        primaryStage.show();
    }

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

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章