gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 17:26:17 26 4
gpt4 key购买 nike

我想知道是否有办法在 Dialog 的按钮下显示一些文本(如信息)?我看过很多地方,但即使对齐按钮也显得很乱(来自 post )。

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

Dialog simple

我在文档中寻找可以帮助我以我想要的方式显示的函数(例如“getButtonBar()”或类似的东西),但没有机会。另外创建一个新的 ButtonBar 对于我想要实现的目标来说似乎有点复杂。

我还尝试创建一个看起来像对话框的舞台,但我需要以与 Dialog 相同的方式单击“是/否”获得结果。

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

最佳答案

只需覆盖 DialogPanecreateButtonBar() 方法:

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);
}
}

enter image description here

关于javafx - 在对话框中的按钮下添加文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38437669/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com