2011-09-14 4 views
3

나는 온라인 어딘가에 지시에 따라 JTable에 체크 박스를 삽입했다. 여기에 그렇게 내 코드입니다 : 나는 JTable의에 체크 박스를 추가하고 관리JCheckBox Behavior in JTable

protected class JTableCellRenderer implements TableCellRenderer { 

    @Override 
    public Component getTableCellRendererComponent(JTable table, Object value, 
     boolean isSelected, boolean hasFocus, int row, int column) { 
     JCheckBox rendererComponent = new JCheckBox(); 
     rendererComponent.setSelected((Boolean) tableModel.getValueAt(row, 
     column)); 
     return rendererComponent; 
    } 

    }

,하지만 나는 내 프로그램을 실행할 때, 나는 다음과 같은 동작을 얻을 :

enter image description here

어떻게 할을 사용자가 확인란을 클릭 할 때 드롭 다운 메뉴에서 True 또는 False를 선택하는 대신 확인란을 선택할 수있게합니까? 감사!

답변

6

렌더러 나 에디터를 조작 할 필요가 없으므로 다음 지침이 좋지 않습니다. (그런데 에디터를 변경하지 않고 렌더러를 변경했다는 것이 문제입니다.) TableModel 클래스에 넣기 만하면 getColumnClass(int index) 메서드를 재정의하고 확인란이 필요한 열의 Boolean.class를 반환해야합니다. 그게 전부 야. JTable은 열의 렌더러와 에디터 모두에 대해 자동으로 체크 박스를 사용하여 문제를 아주 쉽게 해결합니다. 물론이 작업을 수행하려면 해당 열의 데이터가 부울이어야 함은 물론입니다.

는 JTables에 오라클 튜토리얼은 당신에게 말할 것이다 모든 이것과 더 많은 : How to use Tables

+0

대단히 감사합니다! 나는 두 가지 해결책 (즉,'TableCellEditor'를 추가하고'TableCellRenderer'과'TableCellEditor' 둘 다를 제거하고'getColumnClass (int index)'메소드를 수정하는 것)을 시도해 보았습니다! 나는 후자의 해결책을 고수하고있다. 정말 감사! –