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

如何使用GridPane JavaFX使按钮跨越多列/行?

发布时间:2020-12-15 04:36:56 所属栏目:Java 来源:网络整理
导读:我是 JavaFX的新手,正在尝试使用GridPane进行简单的按钮设计. 我无法弄清楚如何使按钮跨越多个列/行,而不会将其他按钮推开.我一直在使用HBox和VBox将其他按钮组合在一起.我在按钮上尝试过setRowSpan,但这似乎不起作用. How it is looking How i want it to l
我是 JavaFX的新手,正在尝试使用GridPane进行简单的按钮设计.

我无法弄清楚如何使按钮跨越多个列/行,而不会将其他按钮推开.我一直在使用HBox和VBox将其他按钮组合在一起.我在按钮上尝试过setRowSpan,但这似乎不起作用.

How it is looking

How i want it to look

这是我的代码:

import javafx.stage.*;
import javafx.application.*;
import javafx.scene.*;
import javafx.scene.control.*;
import javafx.scene.layout.*;

public class SimpleGUI extends Application {
 public void start(Stage primaryStage) throws Exception {
  GridPane root = new GridPane();
  Scene scene = new Scene(root,200,200);

   //Buttons
   Button b1 = new Button("KNAPP 1");
   Button b2 = new Button("KNAPP 2");
   Button b3 = new Button("KNAPP 3");
   Button b4 = new Button("KNAPP 4");
   Button b5 = new Button("KNAPP 5");
   Button b6 = new Button("KNAPP 6");

   //Horizontal Box
   HBox topButtons = new HBox();
   topButtons.getChildren().add(b1);
   topButtons.getChildren().add(b2);
   topButtons.getChildren().add(b3);

   //Vertical Box
   VBox leftButtons = new VBox();
   leftButtons.getChildren().add(b4);
   leftButtons.getChildren().add(b5);

   //Placement
   GridPane.setConstraints(topButtons,0);
   GridPane.setConstraints(leftButtons,1);
   GridPane.setConstraints(b6,1,1);

   //Length (3 Columns,2 Rows)
   GridPane.setColumnSpan(topButtons,3);
   GridPane.setRowSpan(leftButtons,2);

   //Add them to the stage
   root.getChildren().add(topButtons);
   root.getChildren().add(leftButtons);
   root.getChildren().add(b6);

   primaryStage.setScene(scene);
   primaryStage.show();
 }

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

解决方法

由于您使用的是网格窗格,因此您不需要HBox和VBox:

import javafx.stage.*;
import javafx.application.*;
import javafx.scene.*;
import javafx.scene.control.*;
import javafx.scene.layout.*;

public class SimpleGUI extends Application {
 public void start(Stage primaryStage) throws Exception {
  GridPane root = new GridPane();
  Scene scene = new Scene(root);

   //Buttons
   Button b1 = new Button("KNAPP 1");
   Button b2 = new Button("KNAPP 2");
   Button b3 = new Button("KNAPP 3");
   Button b4 = new Button("KNAPP 4");
   Button b5 = new Button("KNAPP 5");
   Button b6 = new Button("KNAPP 6");

   root.add(b1,0);
   root.add(b2,0);
   root.add(b3,2,0);

   root.add(b4,1);
   root.add(b5,2);

   // node,columnIndex,rowIndex,columnSpan,rowSpan:
   root.add(b6,2);

   // allow button to grow:
   b6.setMaxSize(Double.MAX_VALUE,Double.MAX_VALUE);

   primaryStage.setScene(scene);
   primaryStage.show();
 }

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

enter image description here

(编辑:李大同)

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

    推荐文章
      热点阅读