TextArea
JavaFX:高さ(行数)をコンテンツの高さにバインドすることは可能ですか?テキストを書きながら、
高さを動的に変えたい。TextArea
質問する
6211 次
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 に答える