JavaFX 标签高度

Posted

技术标签:

【中文标题】JavaFX 标签高度【英文标题】:JavaFX labels height 【发布时间】:2014-01-26 00:24:54 【问题描述】:

我正在使用 JavaFX 和 JavaFX Scene Builder 开发软件。

我有一个包含 2 列的网格窗格。实际上在每个单元格中都有标签。 在表格的第一列中,标签内的文本是默认常量,在第二列中,文本可以更改。

问题是如果文本变量太长,它会被自动截断。

如何在网格窗格中开始新行修剪文本并调整行高?

编辑:

感谢@f*** 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);
    

【问题讨论】:

【参考方案1】:

很遗憾,Label 元素不会根据显示的文本调整大小。我推荐使用Text 形状。您可以在场景构建器中使用环绕宽度指定最大宽度。

【讨论】:

感谢您的建议,我已经用包含解决方案的代码更新了我的问题。【参考方案2】:

你可以试试:

Label col2Label = new Label();
col2Label.setWrapText( true );
col2Label.setMaxHeight( Double.MAX_VALUE );
col_1_Label.prefHeightProperty().bind( col2Label.heightProperty() );

【讨论】:

【参考方案3】:

您可以将 [Region - Label - Region] 包裹在 HBox 中。 该区域将始终保持标签居中。

【讨论】:

以上是关于JavaFX 标签高度的主要内容,如果未能解决你的问题,请参考以下文章

JavaFX - 使 TableView 高度适应行数

JavaFX MediaPlayer 高度不准确的搜索

如何在 javafx imageView 中获取显示图像的宽度/高度?

如何均匀分布 JavaFX VBox 的元素

单元格中的标签高度不会动态改变高度

如何计算 SwiftUI 中的标签栏高度?