자동 편집 기능이있는 간단한 편집 가능한 ComboBox를 작성하고 있습니다. 내부 TextField의 내용에 따라 ComboBox의 내용을 필터링하고 싶습니다.
나는 그럭저럭 효과를 낼 수 있었지만 TextField에서 문자를 삭제할 때 자동 완성 논리를 다시 적용 할 때 문제가 발생했습니다.JavaFX ComboBox 키 이벤트시 TextField 내용
내가 본 것으로부터, 키를 눌렀을 때 텍스트 필드의 내용에는 아직 추가 된 문자가 포함되어 있지 않습니다.
그래서 TextField의 내용을 시뮬레이션하기 위해 KeyEvent의 문자열 버전을 추가하는 간단한 로직을 만들었습니다. 인 (
// In constructor
cmb.getEditor().setOnKeyPressed(this::handleOnKeyPressed);
public void handleOnKeyPressed(KeyEvent e) {
String text = comboBox.getEditor().getText() + e.getText();
// Filtering logic based on text
}
, 그것은 작동하지 않습니다 : 나는 내 논리 기본적으로
을 적용 할 전체 텍스트를 가질 필요가이 beacuse했다 코드 당 명백 함).
그래서 내가 볼 수있는 해결책은 캐럿 위치를 확인하고 캐럿 위치를 기반으로 백 스페이스/삭제 문자 제거를 시뮬레이트하는 것입니다. 그러나 이것은 상당히 성가신 일입니다 ...
따라서이 일을하는 더 깔끔한 방법이 없는지 궁금합니다. 전체 텍스트를 직접 가져올 수 있습니까? 처음에는 변경 리스너를 추가하려고 생각했지만 TextField에서는 불가능한 것 같습니다.
아이디어가 있으십니까?
감사합니다.
을)'의 TextField. – ItachiUchiha
예, 실제로 아래 답변이 유효합니다! – Xendar