파이썬은 tab키를 보통 네 개의 공백문자로 치환하여 표시한다. richtextfx 라이브러리의 CodeArea 에서 이것을 수행하려면 다음 중 하나를 사용해야 한다.
codeArea.addEventFilter(KeyEvent.KEY_PRESSED, (keyEvent) -> {if (keyEvent.getCode() == KeyCode.TAB) {codeArea.insertText(codeArea.getCaretPosition(), " ");keyEvent.consume();}}); |
아래의 두 개는 동작 방식이 유사하다.
codeArea.addEventHandler(KeyEvent.KEY_PRESSED, (keyEvent) -> {if (keyEvent.getCode() == KeyCode.TAB) {codeArea.insertText(codeArea.getCaretPosition(), " ");keyEvent.consume();}}); |
codeArea.setOnKeyPressed( (keyEvent) -> {if (keyEvent.getCode() == KeyCode.TAB) {codeArea.insertText(codeArea.getCaretPosition(), " ");keyEvent.consume();}}); |
이들 중 가장 첫 번째 방법은 키입력이 처리되지 전에 람다함수가 호출되어 keyEvent.consume() 함수가 듣는다. 즉, tab키를 누르면 tab문자가 입력되기 전에 람다함수가 호출되고 그 안에서 consume() 되므로 결과적으로 공백문자들(4개)만 입력된다. 따라서 이 방법을 사용해야 한다.
하지만 그 다음 두 개는 키입력이 된 다음에 람다함수가 호출된다. 따라서 consume()함수는 호출하나 마나이다. 이 경우 tab키를 누르면 먼저 입력창에 tab 문자가 입력되고 그 뒤에 공백문자들이 붙는다.
'연구 > espy 개발 노트' 카테고리의 다른 글
ESPyHarp release page (0) | 2016.10.01 |
---|---|
javafx로 대화창/경고창 생성하기 (0) | 2016.09.30 |
RichTextFX 로 scroll bar를 붙이는 방법 (0) | 2016.09.26 |
RichTextFX.CodeArea 에 css 적용하기 (0) | 2016.09.24 |
RichTextFx 을 AnchorPane에 붙이기 (0) | 2016.09.21 |