【发布时间】:2014-01-26 00:24:54
【问题描述】:
我正在使用 JavaFX 和 JavaFX Scene Builder 开发软件。
我有一个包含 2 列的网格窗格。实际上在每个单元格中都有标签。 在表格的第一列中,标签内的文本是默认常量,在第二列中,文本可以更改。
问题是如果文本变量太长,它会被自动截断。
如何在网格窗格中开始新行修剪文本并调整行高?
编辑:
感谢@fabian issues,这是最初问题的解决方案。 需要将每个元素的 fx:id 设置到 Scene Builder 中。
@FXML private GridPane gridPane;
@FXML private Text text1;
@FXML private Text text2;
@FXML private Text text3;
private void setGridRowHeight(GridPane gpName, int numRow, double height){
ObservableList<RowConstraints> rows = gpName.getRowConstraints();
rows.get(numRow).setMinHeight(32);
rows.get(numRow).setPrefHeight(height);
rows.get(numRow).setMaxHeight(height);
}
private void addTextListener(final GridPane gridPane, final Text text){
text.textProperty().addListener(new ChangeListener<String>() {
@Override
public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
scrollPane.setFitToHeight(true);
text.setWrappingWidth( gridPane.getColumnConstraints().get(1).getPrefWidth() );
setGridRowHeight(gridPane, gridPane.getRowIndex(text), text.getLayoutBounds().getHeight() );
}
});
}
@FXML public void initialize() {
addTextListener(gridPane, text1);
addTextListener(gridPane, text2);
addTextListener(gridPane, text3);
}
【问题讨论】:
标签: java height javafx label scenebuilder