java输入对话框高度怎么调_java – 添加内容时如何自动调整对话框窗格大小?...

在JavaFX中,当用户在对话框中添加输入行时,如何使对话框自动调整大小以适应新内容。通过在`Add Row`按钮的动作事件处理程序中调用`dialogPane.getScene().getWindow().sizeToScene();`可以实现这一目标,这类似于Swing的`jframe.pack()`。
摘要由CSDN通过智能技术生成

对于我正在开发的应用程序,我需要用户输入多行数据.确切的数字是可变的,用户也应该能够自己添加行.我现在正在使用JavaFX Dialog,除了当你添加行时,Dialog没有相应调整大小.有没有办法让Dialog在添加行时自动调整大小?

下面是一个演示应用程序,其中包含一个示例测试应用程序,其中的Dialog类似于我想要的.

package test_dialog;

import javafx.application.Application;

import javafx.event.ActionEvent;

import javafx.geometry.Pos;

import javafx.scene.Scene;

import javafx.scene.control.Button;

import javafx.scene.control.ButtonType;

import javafx.scene.control.Dialog;

import javafx.scene.control.DialogPane;

import javafx.scene.control.TextField;

import javafx.scene.layout.GridPane;

import javafx.scene.layout.StackPane;

import javafx.stage.Stage;

public class Test_Dialog extends Application {

class ScalableDialog extends Dialog {

int nrRows = 2;

public ScalableDialog() {

// We are resizable

setResizable(true);

// Set up the grid pane.

GridPane grid = new GridPane();

grid.setHgap(10);

grid.setVgap(5);

grid.setMaxWidth(Double.MAX_VALUE);

grid.setAlignment(Pos.CENTER_LEFT);

// Set up dialog pane

DialogPane dialogPane = getDialogPane();

dialogPane.setHeaderText(null);

dialogPane.getButtonTypes().addAll(ButtonType.OK, ButtonType.CANCEL);

dialogPane.setContent(grid);

// Create some fields to start with

for (int i = 0; i < nrRows; i++) {

grid.addRow(i, new TextField("Row: " + i));

}

// Add button

final Button buttonAdd = new Button("Add Row");

buttonAdd.setOnAction((ActionEvent e) -> {

// Move Button to next row

GridPane.setRowIndex(buttonAdd, nrRows + 1);

// Insert new text field row

grid.addRow(nrRows, new TextField("New: " + nrRows++));

});

grid.add(buttonAdd, 0, nrRows);

}

}

@Override

public void start(Stage primaryStage) {

Button button = new Button();

button.setText("Open Dialog");

button.setOnAction(e -> {

new ScalableDialog().showAndWait();

});

StackPane root = new StackPane();

root.getChildren().add(button);

Scene scene = new Scene(root, 300, 250);

primaryStage.setTitle("Scalable Dialog Test");

primaryStage.setScene(scene);

primaryStage.show();

}

/**

* @param args the command line arguments

*/

public static void main(String[] args) {

launch(args);

}

}

解决方法:

dialogPane.getScene().getWindow().sizeToScene();

on“添加”按钮的动作事件处理程序.

Stage.sizeToScene()类似于Swing的jframe.pack().在底部,对话框被添加到某个(子,次)阶段,我们可以通过getScene().getWindow()获取它.

标签:java,javafx-8

来源: https://codeday.me/bug/20190528/1169925.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值