【发布时间】:2016-04-04 09:54:29
【问题描述】:
我有一些遗留代码要修复,我正在努力解决以下问题:
我有 2 个嵌套的网格窗格。在内部网格内,必须添加文本。
内部和外部网格的列宽使用以下函数计算相对于屏幕大小:
private GridPane createGridPane( int []colsPercent, int []rowsPercent ) {
GridPane gridPane = new GridPane()
// setup columns
ColumnConstraints []colConst = new ColumnConstraints[colsPercent.length];
for( int i = 0 ; i < colsPercent.length ; i++ ) {
colConst[i] = new ColumnConstraints();
colConst[i].setPercentWidth(colsPercent[i]);
colConst[i].setFillWidth(true);
}
gridPane.getColumnConstraints().addAll(colConst);
// setup rows
RowConstraints []rowConst = new RowConstraints[rowsPercent.length];
for( int i = 0 ; i < rowsPercent.length ; i++ ) {
rowConst[i] = new RowConstraints();
rowConst[i].setPercentHeight(rowsPercent[i]);
rowConst[i].setFillHeight(true);
}
gridPane.getRowConstraints().addAll(rowConst);
return gridPane;
}
网格及其内容通过以下代码添加:
gridPane = createGridPane(colConstFeedbackScreenPercent,
rowConstFeedbackScreenPercent);
gridPane.setGridLinesVisible(true);
GridPane.setHgrow(gridPane, Priority.NEVER);
GridPane innerGridPane = createGridPane(colConstFeedbackInnerPercent,
rowConstFeedbackInnerPercent);
GridPane.setHgrow(innerGridPane, Priority.NEVER);
innerGridPane.setGridLinesVisible(true);
gridPane.add(innerGridPane, 1, 1);
如果我将文本添加到内部 gridPane,如下所示:
VBox vBox = new VBox();
vBox.setSpacing(25);
{
Text text = new Text(IRAPfx.getData().getOptionString("Localised text 6"));
text.setFont(Font.font("Arial",FontPosture.ITALIC,FONT_SIZE_INSTRUCTIONS));
text.setFill(Color.WHITE);
GridPane.setHgrow(text, Priority.NEVER);
vBox.getChildren().add(text);
}
...
GridPane.setHgrow(vBox, Priority.NEVER);
innerGridPane.add(vBox, 1, 1 + resultsCell );
当文本字符串太大而无法放入其单元格时,内部网格和外部网格将一起增长,从而导致整个网格(内部和外部)被“拉伸”以适应这么长内容,并在屏幕的右边缘运行。
我想要归档的是,长字符串会越过外部网格,如果它真的很长,甚至会超出屏幕,但不会拉伸整个网格。
正如您在代码中看到的,我尝试将 Hgrow 设置为 NEVER 无济于事。任何如何解决它的建议(我在 www.. 上找不到示例或提示)都将非常受欢迎。
提前致谢, 乔里斯
【问题讨论】:
标签: java javafx javafx-8 gridpanel