당신은 텍스트 영역에 렌더링 된 텍스트의 정확한 크기를 찾을 수 있습니다 : 그 차원을 기반으로
@Override
public void start(Stage primaryStage) {
TextArea area = new TextArea("This is some random very long text");
area.setWrapText(true);
area.setPrefWidth(200);
area.setMaxWidth(200);
area.setStyle("-fx-font: 18pt Arial");
StackPane root = new StackPane(area);
Scene scene = new Scene(root, 300, 250);
primaryStage.setScene(scene);
primaryStage.show();
Text t = (Text)area.lookup(".text");
System.out.println("LayoutX "+t.getLayoutX());
System.out.println("LayoutY "+t.getLayoutY());
System.out.println("Width: "+t.getBoundsInLocal().getWidth());
System.out.println("Height: "+t.getBoundsInLocal().getHeight());
}
, 당신은 당신의 계산을 수행 할 수 있습니다.
편집
스테이지를 표시하기 전에 크기를 얻을 수 있습니다,하지만 당신은 루트 및 어린이에 CSS 스타일을 적용하고 현장에 레이아웃을 강제해야
Scene scene = new Scene(root, 300, 250);
root.applyCss();
root.layout();
Text t = (Text)root.lookup(".text");
System.out.println("LayoutX "+t.getLayoutX());
System.out.println("LayoutY "+t.getLayoutY());
System.out.println("Width: "+t.getBoundsInLocal().getWidth());
System.out.println("Height: "+t.getBoundsInLocal().getHeight());
// Now calculations can be performed
primaryStage.setScene(scene);
primaryStage.show();
인가 스크롤하지 않고 모든 텍스트를 포함 할 수있는 높이로 높이를 설정하여 TextArea에서 세로 스크롤 막대를 제거 할 때의 문제점은 무엇입니까? – javaHunter
아니요, 스크롤바는 중요하지 않습니다. textArea가 큰 경우 (스크린 크기의 절반보다 큰 경우) 사용할 수 있습니다. TextArea가 스크린 크기의 절반보다 작 으면 TextArea가 텍스트의 높이를 가져야합니다. 다른 경우에는 스크롤바가 TextArea 내에서 사용하는 화면의 절반 높이가 있습니다 – Bine