[자바] JTable setCellEditor 버그 getCellEditor 로 잡는다.
2023. 5. 6. 19:49ㆍJava
작성일 : 2009. 10. 20.
지긋지긋하고 징그러운 자바 기술. 스윙버그 피하느라 힘들다.
4년 전부터 고민해오던 부분이다.
JTable 에서 특정 컬럼의 에디터로써 JComboBox 를 사용하는 경우 다음과 같은 문제와 맞딱드리게 된다.
1. 열(ROW) 이 달라도 행(COLUMN) 이 같으면 동일한 에디터가 사용된다.
2. 같은 행이지만 각각의 열마다 다른 데이터를 보여주려고 매번 새 JComboBox 를 추가해주어도
편집 이벤트 발생 시 마지막으로 편집한 (행,열)의 Focus 를 물고 있어서 기존 에디터를 보여준다.
특히, 새 에디터를 보려면 JComboBox 를 안쓰는 다른 열을 클릭했다가 다시 클릭해주어야 제대로 보여주기도 한다.
다행히도 setter 의 반대인 getter 를 쓰면 이런 문제를 해결할 수 있다.
JTable 변수를 정의할 때, 생성자 안에 getCellEditor() 메소드를 내장함으로써 반환값이 바뀌도록 유도하는 방식이다. 아래처럼 >
설정이 불필요한 부분은 super 를 그대로 연결하면 된다.
위의 예에서는 row (열)마다 미리 지정된 String 배열 값을 읽어서 보여준다.
"terminateEditOnFocusLost" 는 제대로 동작하는지 모르겠지만 그냥 붙인다.
그냥 부적같은 거라고 할까. 포커스를 잃을 때 열린 에디터 창을 닫게 하는 기능이다.
'Java' 카테고리의 다른 글
자바 그놈 컴파일, 런타임 설정 - Geany Editor (지니) 편 (0) | 2023.05.06 |
---|---|
자바 그놈 컴파일, 런타임 설정 - GEdit 편 (0) | 2023.05.06 |
자바 그놈 컴파일 및 실행 환경 구축 (0) | 2023.05.06 |
[자바] JNLP PRINTING (0) | 2023.05.06 |
[자바] JDK 설치(JRE 중복 설치?) (0) | 2023.05.06 |