使用JavaFX:是否可以将GridPane放入警报对话框?

时间:2016-12-12 23:45:24

标签: javafx dialog alert gridpane

我有一个用文本填充的警告框,出于格式化的原因,我想知道我是否能以某种方式将GridPane放在此警告框中,以便所有文本都正确间隔开。

如果无法使用GridPane执行此操作,还有其他一些格式化文本的方法吗?

1 个答案:

答案 0 :(得分:2)

是的,您可以set any node as content对话框。

alert.getDialogPane().setContent(grid);

以下是格式化为网格内容的冻结橙色合约的卖出/购买提醒。

frozen orange juice contracts

import javafx.application.Application;
import javafx.geometry.HPos;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.layout.*;
import javafx.stage.Modality;
import javafx.stage.Stage;

public class GridAlert extends Application {
    @Override
    public void start(Stage stage) {
        Alert alert = new Alert(Alert.AlertType.INFORMATION);
        alert.setHeaderText("Frozen Orange Juice Contracts");

        GridPane grid = new GridPane();
        grid.addRow(0, new Label("Sell"), new Label("142"));
        grid.addRow(1, new Label("Buy"), new Label("29"));
        grid.setHgap(30);
        ColumnConstraints right = new ColumnConstraints();
        right.setHalignment(HPos.RIGHT);
        grid.getColumnConstraints().setAll(new ColumnConstraints(), right);

        alert.getDialogPane().setContent(grid);

        Button showAlert = new Button("Show Alert");
        showAlert.setOnAction(event -> alert.showAndWait());

        HBox layout = new HBox(10);
        layout.getChildren().addAll(
                showAlert
        );
        layout.setPadding(new Insets(10));
        stage.setScene(new Scene(layout));
        stage.show();

        alert.initOwner(stage);
        alert.initModality(Modality.WINDOW_MODAL);
    }

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