5

私は JavaFX と JavaFX Scene Builder でソフトウェアを開発しています。

2 列のグリッド ペインがあります。実際、各セルにはラベルがあります。表の最初の列では、ラベル内のテキストはデフォルトの定数であり、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);
}    
4

3 に答える 3

6

残念ながら、Label要素は表示されるテキストに応じてサイズ変更されません。Textシェイプを使用することをお勧めします。シーン ビルダーで折り返し幅を使用して最大幅を指定できます。

于 2014-01-08T13:36:20.097 に答える
0

[リージョン - ラベル - リージョン] を HBox でラップできます。リージョンはラベルを常に中央に保ちます。

于 2015-02-17T03:42:38.117 に答える