이전 질문에서는 JTable 열의 형식을 문자열로 지정하고 정렬 기능을 double로 지정하는 데 중점을 두었습니다. 이 논의에 이어 새로운 질문이 제기됩니다. 셀 값을 편집한 후 셀 렌더링을 유지하는 방법은 무엇입니까?
구체적으로 문제는 사용자 정의 셀 렌더러를 사용하여 셀 형식을 지정한 다음 JTextField 편집기를 구현한 후입니다. , 셀을 편집한 후 사용자 정의 렌더러의 형식이 손실됩니다. 이는 다음과 같은 질문을 던집니다. 렌더러는 초기 데이터 표시 후 셀 렌더링을 계속하도록 의도되지 않았습니까?
다행히도 렌더러가 다음과 같이 작동하지 않는 문제는 아닙니다. 예상되는. 핵심은 테이블의 편집 과정을 이해하는 데 있습니다. 편집이 끝나면 테이블의 editStopped() 메서드는 getCellEditorValue()를 통해 업데이트된 값을 검색하고 이를 모델의 setValueAt()에 활용합니다. 이는 차례로 fireTableCellUpdated()를 트리거하여 규정된 렌더러를 호출합니다. 따라서 숫자 형식을 유지하려면 기본 렌더러를 재정의하는 것으로 충분합니다.
구현에 더 많은 유연성이 필요한 경우 렌더러 인스턴스를 편집기 구성 요소로 사용하는 것이 실행 가능한 옵션입니다. 예는 다음과 같습니다.
// ... table.setDefaultRenderer(Double.class, new CurrencyRenderer(nf)); table.setDefaultEditor(Double.class, new CurrencyEditor(nf)); // ... private static class CurrencyEditor extends DefaultCellEditor { // ... @Override public Object getCellEditorValue() { // ... } @Override public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { // ... } }
이 접근 방식을 사용하면 사용자 정의 렌더러가 셀 렌더링과 편집 촉진에 모두 활용됩니다.
위 내용은 셀 편집 후 사용자 정의 JTable 셀 렌더링을 유지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!