Java

javaFX TextField 한글 입력 및 한/영 변환

0
javaFX TextField에서 한글 입력시 커서가 왼쪽에 위치하는데 수정하는 방법이 있을까요? 그리고 ime-mode 같이 텍스트 입력하기 전에 한글/영어 변환을 프로그램 내에서 가능 하게 하는 방법이 있을까요?

javaFX TextField에서 한글 입력시 커서가 왼쪽에 위치하는데 수정하는 방법이 있을까요?

그리고 ime-mode 같이 텍스트 입력하기 전에 한글/영어 변환을 프로그램 내에서 가능 하게 하는 방법이 있을까요?

짱선 2021-05-04
짱선 님께서 2021-05-04에 Java에 올린 질문

댓글

1개의 답변

0
커서의 위치를 수정하기 위해 아래 코드가 도움이 되실지 모르겠습니다. textField.focusedProperty().addListener(new ChangeListener() { @Override public void changed(ObservableValue

커서의 위치를 수정하기 위해 아래 코드가 도움이 되실지 모르겠습니다.

textField.focusedProperty().addListener(new ChangeListener<Boolean>() {
    @Override
    public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
        if (newValue) {
            Platform.runLater(()->{
              textField.deselect();
              textField.positionCaret(textField.getLength());
            });                   
        }
    }
});

 

그리고 JavaFX에서 직접 IME를 콘트롤하는 방법은 없을 것 같습니다.

다만 윈도우즈 API를 호출하여 IME를 콘트롤 하는 방식은 가능할지도 모르겠습니다.

아마도 아래 링크와 코드가 참고가 되실 지 모르겠네요.

http://blog.7thwheel.com/entry/2017/03/25/173238

 

무린 2021-05-06
사탕 주기
무린 님께서 2021-05-06에 Java에 올린 글
보관하기
0
 
짱선 2021-05-07
먼저 답변 감사드립니다 그런데 focusedProperty() 으로는 커서의 위치가 바뀌지 않고 textField.positionCaret(textField.getLength()); 이렇게 하면 무조건 끝으로 커서가 가는게 아닌가요?
만약 글자를 텍스트 중간에 쓴다고 하면 입력할 때마다 커서가 맨 끝으로 가는게 아닌지요...
0
 
무린 2021-05-08
중간에 입력하는 경우에는 아마도 getCaretPosition()같은 메소드를 활용해서 현재 커서위치가 newValue의 길이와 같은 경우에만 맨 끝으로 가도록 처리해야하지 않을까 싶습니다.

댓글

조회수 254
답글 1
URL