【发布时间】:2016-04-08 18:24:00
【问题描述】:
我有以下申请:
我的应用程序的最右侧有很多不需要的空白。
这是我的start() 方法。在这里,initComponents() 只是实例化了应用程序上的控件,并将其添加到网格窗格中。
primaryStage.setTitle("Music Masher");
gridPane = new GridPane();
initComponents();
root = new StackPane();
root.getChildren().add(gridPane);
primaryStage.setScene(new Scene(root));
primaryStage.sizeToScene();
primaryStage.show();
在initComponents() 方法中,网格窗格中唯一更改的约束如下:
gridPane.setHgap(10);
gridPane.setVgap(15);
gridPane.setPadding(new Insets(10, 10, 10, 10));
TextFields 的列跨度为 4,一些按钮的列跨度为 2。
initComponents()方法:
public void initComponents(){
//Left components
goBackLeft = new Button("<<");
gridPane.add(goBackLeft, 0, 0);
playButtonLeft = new Button(" Play ");
gridPane.add(playButtonLeft, 1, 0);
gridPane.setColumnSpan(playButtonLeft, 2);
goForwardLeft = new Button(">>");
gridPane.add(goForwardLeft, 3, 0);
songFieldLeft = new TextField();
songFieldLeft.setEditable(false);
gridPane.add(songFieldLeft, 0, 1);
gridPane.setColumnSpan(songFieldLeft, 4);
pickButtonLeft = new Button("Pick Song");
gridPane.add(pickButtonLeft, 1, 2);
gridPane.setColumnSpan(pickButtonLeft, 2);
//End Left
//Right components
goBackRight = new Button("<<");
gridPane.add(goBackRight, 5, 0);
playButtonRight = new Button(" Play ");
gridPane.add(playButtonRight, 6, 0);
gridPane.setColumnSpan(playButtonRight, 2);
goForwardRight = new Button(">>");
gridPane.add(goForwardRight, 8, 0);
songFieldRight = new TextField();
songFieldRight.setEditable(false);
gridPane.add(songFieldRight, 5, 1);
gridPane.setColumnSpan(songFieldRight, 4);
pickButtonRight = new Button("Pick Song");
gridPane.add(pickButtonRight, 6, 2);
gridPane.setColumnSpan(pickButtonRight, 2);
//End right
mashButton = new Button("Mash!");
gridPane.add(mashButton, 4, 3);
gridPane.setHgap(10);
gridPane.setVgap(15);
gridPane.setPadding(new Insets(10, 10, 10, 10));
}
为什么会出现这个多余的空间?有谁知道如何解决这一问题?我试过改变舞台的宽度,但这会使控件偏离其原始位置。
【问题讨论】:
-
我不明白为什么文本字段的列跨度为 4(从屏幕截图中应该是 3),尽管这不会在右侧创建额外的空间。能贴出网格窗格的所有布局代码吗?
-
现在将发布。但“播放”按钮的列跨度为 2,总共有 4 个单元格。
-
好的,但是为什么呢?播放按钮不需要跨越其他列。不过没关系。
-
@James_D 代码已发布,这就是全部内容。