2011-04-08 4 views

답변

1

이 체크 박스를 넣어 작동하는 예이다 : 그 내용은

import javax.swing.*; 
import javax.swing.table.*; 

public class Test { 
    public static void main(String [] args) throws Exception { 
    DefaultTableModel model = new DefaultTableModel(null, new String [] {"CheckMe", "Value"}) { 
           public Class getColumnClass(int c) { 
            switch (c) { 
            case 0: return Boolean.class; 
            default: return String.class; 
            } 
           } }; 
    JTable table = new JTable(model); 
    JFrame frame = new JFrame("CheckBox Test"); 
    frame.add(table); 
    model.addRow(new Object [] {true, "This is true"}); 
    model.addRow(new Object [] {false, "This is false"}); 
    frame.pack(); frame.validate(); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setVisible(true); 
    } 
} 
0

체크 박스의 경우 : Herehere 작동 예제가 있습니다.

버튼의 경우 : herehere 작동 예제가 있습니다. 여기에 버튼 확실하지만,하지

0

을, 당신은 TableCellRendererTableCellEditor 작성해야합니다.

기본 스윙 구현에서 쉽게 파생시킬 수 있습니다.

각 클래스에서 이러한 인터페이스의 한 가지 메소드를 재정의해야하며 전달 된 rowcolumn 인수를 확인하십시오. 행과 열이 기준에 일치하는 경우 JCheckBox 또는 JButton을 반환하고 그렇지 않으면 super 구현에 의해 반환 된 JComponent을 반환합니다 (이러한 인터페이스의 기본 스윙 구현을 사용하는 경우).

1

khachik의 답변에서 알 수 있듯이 확인란의 지원은 열의 열 클래스를 기반으로하는 테이블에서 제공됩니다.

그러나 특정 열의 특정 행에만 확인란을 사용하려는 경우 getCellRenderer (...) 및 getCellEditor (...) 메서드를 재정 의하여 지정된 렌더러/편집기를 반환해야합니다. 세포. 다음과 같음 :

public TableCellEditor getCellEditor(int row, int column) 
{ 
    int modelColumn = convertColumnIndexToModel(column); 

    if (modelColumn == 1 && row < 3) 
     return getDefaultEditor(Boolean.class); 
    else 
     return super.getCellEditor(row, column); 
}