JavaFX + SceneBuilder TextFlow 스크롤 추가 및 포커스 설정
Textarea와 기능은 같지만, Textarea 가 text의 속성을 변경 할 수 없기 때문에
TextFlow를 사용합니다. (아래 Link 참조)
Link : JavaFX Text style 변경 TextArea, TextFlow
하지만 TextFlow 는 자동스크롤 및 포커스 설정이 안되기 때문에 따로 설정을 해주셔야 하는데요,
이를 위해 SceneBuilder로 이동합니다.
TextFlow 위에서 마우스 오른쪽 클릭 > Wrap in > ScrollPane 을 선택합니다.
그러면 아래와 같은 구조가 됩니다.
ScrollPane이 TextFlow를 감싸는 구조가 되는데요, 이렇게 되어야 TextFlow에 Text가 size이상 추가될 때 스크롤이 동작하게 할 수 있습니다.
추가가 되었으면 Layout을 아래와 같이 맞춰 줍니다.
Pref Width, Height 는 TextFlow와 같게 설정하였습니다. Fit To Width, Height 체크, LayoutX, Y를 1 만큼 설정해줍니다.
무엇이 변하는지는 값을 바꿔가면서 확인해보세요.
이제 TextFlow에 Text 가 추가되면서 사이즈를 넘어가게 되면 스크롤이 생깁니다.
하지만 최하단으로 포커스가 이동되진 않습니다.
이를 위한 코드를 추가해줍니다.
public static void printLogger(String msg) {
Platform.runLater(new Runnable() {
@Override
public void run() {
LOGGER.info(msg);
nomalTf.getChildren().add(new Text(getTime()+msg+"\n"));
scrollPane.vvalueProperty().bind(nomalTf.heightProperty());
}
});
}
코드를 보시면 scrollPane의 vvalue에 textFlow의 heightProperty 를 bind 하고 있습니다.
Text가 TextFlow에 추가되고, 그 높이값을 수직설정값에 적용하면서 포커스를 최하단으로 움직이게 됩니다.
'Programing > JavaFX' 카테고리의 다른 글
JavaFX window 종료(x) 버튼 클릭 시 경고창 띄우는 방법 및 이벤트 처리 (0) | 2019.11.08 |
---|---|
JavaFX favicon, icon 적용하는 방법 (0) | 2019.10.31 |
JavaFX Text style 변경 TextArea, TextFrow (0) | 2019.10.28 |
JavaFX UI변경하기, 변경시 주의점. Not on FX application thread (0) | 2019.10.28 |
Springboot + JavaFX + SceneBuilder 새창열기 open new window (0) | 2019.10.25 |
댓글