9

TextAreaJavaFX:高さ(行数)をコンテンツの高さにバインドすることは可能ですか?テキストを書きながら、
高さを動的に変えたい。TextArea

4

3 に答える 3

2

これは、正確でシンプルで実用的なソリューションです。

SimpleIntegerProperty count = new SimpleIntegerProperty(20);
int rowHeight = 10;

txtArea.prefHeightProperty().bindBidirectional(count);
txtArea.minHeightProperty().bindBidirectional(count);
txtArea.scrollTopProperty().addListener(new ChangeListener<Number>(){
    @Override
    public void changed(ObservableValue<? extends Number> ov, Number oldVal, Number newVal) {
        if(newVal.intValue() > rowHeight){
            count.setValue(count.get() + newVal.intValue());
        }
    }
});

または、ラムダを使用して構文をさらに単純化することもできます。

SimpleIntegerProperty count=new SimpleIntegerProperty(20);
int rowHeight = 10;

textArea.prefHeightProperty().bindBidirectional(count);
textArea.minHeightProperty().bindBidirectional(count);
textArea.scrollTopProperty().addListener((ov, oldVal, newVal) -> {
    if(newVal.intValue() > rowHeight){
        count.setValue(count.get() + newVal.intValue());
    }
});
于 2014-09-03T14:05:49.610 に答える
2

JavaFX utility classを見てください。これはバインディングを使用したソリューションではありませんが、computeTextHeight(Font font, String text, double wrappingWidth)メソッドが役立ちます。

于 2013-03-24T17:58:52.600 に答える