2014-05-23 2 views
0

하나의 열에 JCheckbox를 추가하려는 Jtable이 있습니다. 그러나 JCheckbox 객체를 만들면 javax.swing.JCheckBox가 열에 표시됩니다. 이미지를 참조하십시오. 제발 어떻게 저를 고쳐 줄 수 있니? 나는 도처에서 수색했지만 그것에 대한 해결책을 찾을 수없는 것 같습니다. 고맙습니다.JTable의 JCheckBox 표시

답변

3
  1. enter image description here

    는 당신은 당신의 열의 클래스 유형을 지정해야합니다 TableModel
  2. 의 책임이 아니다, 당신의 TableModel에 구성 요소를 추가하지 않습니다. DefaultTableModel을 사용한다고 가정하면 열을 여러 개의 부울로 채우면됩니다. 테스트를 마친 후 메서드 DefaultTableModel (또는 TableModel 구현)을 재정의해야합니다. 은 "체크 박스"열, 그것은 ... Boolean.class

은 자세한 내용

예를 들어

에 대한 How to use tables를 참조 반환

enter image description here

import java.awt.EventQueue; 
import java.util.Random; 
import javax.swing.JFrame; 
import javax.swing.JScrollPane; 
import javax.swing.JTable; 
import javax.swing.UIManager; 
import javax.swing.UnsupportedLookAndFeelException; 
import javax.swing.table.DefaultTableModel; 

public class TestCardLayout { 

    public static void main(String[] args) { 
     new TestCardLayout(); 
    } 

    public TestCardLayout() { 
     EventQueue.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       try { 
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
       } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) { 
       } 

       Random rnd = new Random(); 
       DefaultTableModel model = new DefaultTableModel(new Object[]{"Check boxes"}, 0) { 

        @Override 
        public Class<?> getColumnClass(int columnIndex) { 
         return Boolean.class; 
        } 

       }; 
       for (int index = 0; index < 10; index++) { 
        model.addRow(new Object[]{rnd.nextBoolean()}); 
       } 
       JTable table = new JTable(model); 

       final JFrame frame = new JFrame("Testing"); 
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
       frame.add(new JScrollPane(table)); 
       frame.pack(); 
       frame.setLocationRelativeTo(null); 
       frame.setVisible(true); 
      } 
     }); 
    } 

} 
+0

기본 모델 만 사용하고있는 것은 아닙니다. 나는 벡터를 사용하여 테이블을 구성했다. 또한 부울을 시도했지만 true 및 false가 표시되고 JCheckBox는 표시되지 않습니다. 감사합니다 – user3419642

+0

1-'TableModel'을 사용하고 있습니다.'DefaultTableModel'이라고 불리는 것입니다.'getColumnClass'라는 메서드가 있습니다.이 메소드는 각 열에 대해 예상되는 클래스 유형을 반환하기 위해 재정의해야하며, 예를 들어 설명했듯이 확인란의 열에 대해'Boolean.class'를 반환하면 모든 마법이 발생합니다 – MadProgrammer

+0

맞습니다. 감사 – user3419642