加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

layout – 如何获取按钮来填充javafx gridpane?

发布时间:2020-12-15 02:54:29 所属栏目:Java 来源:网络整理
导读:Java Swing具有GridLayout,它允许您为小部件数组指定大小,例如3X4.小部件然后填充他们占据的面板.你如何在JavaFX中获得类似的效果? 解决方法 我想你问的是如何在网格窗格中获取一个节点来填充分配给其单元格的空间. 有几种方法可以做到这一点.您可以使用静
Java Swing具有GridLayout,它允许您为小部件数组指定大小,例如3X4.小部件然后填充他们占据的面板.你如何在JavaFX中获得类似的效果?

解决方法

我想你问的是如何在网格窗格中获取一个节点来填充分配给其单元格的空间.

有几种方法可以做到这一点.您可以使用静态GridPane方法将GridPane特定的属性设置应用于节点:

GridPane.setFillWidth(myButton,true);
GridPane.setFillHeight(myButton,true);

另一种方法是在网格窗格本身上指定列约束和行约束:

GridPane grid = new GridPane();
for (int rowIndex = 0; rowIndex < numRows; rowIndex++) {
    RowConstraints rc = new RowConstraints();
    rc.setVgrow(Priority.ALWAYS) ; // allow row to grow
    rc.setFillHeight(true); // ask nodes to fill height for row
    // other settings as needed...
    grid.getRowConstraints().add(rc);
}
for (int colIndex = 0; colIndex < numColumns; colIndex++) {
    ColumnConstraints cc = new ColumnConstraints();
    cc.setHgrow(Priority.ALWAYS) ; // allow column to grow
    cc.setFillWidth(true); // ask nodes to fill space for column
    // other settings as needed...
    grid.getColumnConstraints().add(cc);
}

在任何一种情况下,您都需要让节点增长,以便它们遵守网格窗格所做的增长请求.所以,例如:

Button myButton = new Button("Click");
myButton.setMaxSize(Double.MAX_VALUE,Double.MAX_VALUE);
grid.add(myButton,0);

SSCCE(使用行和列约束方法):

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.ColumnConstraints;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.Priority;
import javafx.scene.layout.RowConstraints;
import javafx.stage.Stage;

public class KeyPad extends Application {

    @Override
    public void start(Stage primaryStage) {
        GridPane grid = new GridPane();
        int numRows = 4 ;
        int numColumns = 3 ;
        for (int row = 0 ; row < numRows ; row++ ){
            RowConstraints rc = new RowConstraints();
            rc.setFillHeight(true);
            rc.setVgrow(Priority.ALWAYS);
            grid.getRowConstraints().add(rc);
        }
        for (int col = 0 ; col < numColumns; col++ ) {
            ColumnConstraints cc = new ColumnConstraints();
            cc.setFillWidth(true);
            cc.setHgrow(Priority.ALWAYS);
            grid.getColumnConstraints().add(cc);
        }

        for (int i = 0 ; i < 9 ; i++) {
            Button button = createButton(Integer.toString(i+1));
            grid.add(button,i % 3,i / 3);
        }
        grid.add(createButton("#"),3);
        grid.add(createButton("0"),1,3);
        grid.add(createButton("*"),2,3);

        Scene scene = new Scene(grid);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    private Button createButton(String text) {
        Button button = new Button(text);
        button.setMaxSize(Double.MAX_VALUE,Double.MAX_VALUE);
        button.setOnAction(e -> System.out.println(text));
        return button ;
    }

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读