我正在使用JavaFX和JavaFX Scene Builder开发软件.
我有一个有2列的网格窗格.实际上在每个单元格中都有标签.在表的第一列中,标签内的文本是默认常量,在第二列中文本可以更改.
问题是如果文本变量太长,它会自动截断.
如何开始修剪文本的新行并重新调整网格窗格中行的高度?
编辑:
感谢@fabian问题,这是初始问题的解决方案.在成瘾中有必要将每个元素的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){ ObservableListrows = 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 () { @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); }
fabian.. 6
不幸的是,Label
元素不会根据显示的文本调整大小.我建议使用Text
Shape.您可以在场景构建器中使用包装宽度指定最大宽度.
不幸的是,Label
元素不会根据显示的文本调整大小.我建议使用Text
Shape.您可以在场景构建器中使用包装宽度指定最大宽度.