Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java Swing JTable 셀에 체크박스(JCheckBox) 추가하는 방법

JTableJComponent 클래스의 하위 클래스로, 여러 행(row)열(column)에 정보를 표시하는 테이블을 만들 때 사용됩니다. JTable에서 값을 선택하면 TableModelEvent가 발생하며, 이 이벤트는 TableModelListener 인터페이스를 구현하여 처리할 수 있습니다.

JTable 셀 안에 체크박스를 추가하거나 삽입하려면, 테이블 모델에서 getColumnClass() 메서드를 재정의(오버라이드)하여 해당 열의 클래스 타입을 Boolean.class로 반환하면 됩니다. 그러면 JTable은 Boolean 타입의 데이터를 자동으로 체크박스 형태로 렌더링하고 편집할 수 있게 해줍니다.

예제 코드

import java.awt.*;
import java.util.*;
import javax.swing.*;
import javax.swing.table.*;

public class JCheckBoxJTableTest extends JFrame {
   private JTable table;
   private DefaultTableModel model;

   public JCheckBoxJTableTest() {
      Random rnd = new Random();
      model = new DefaultTableModel(new Object[]{"Check Box1", "Check Box2", "Check Box3"}, 0) {
         @Override
         public Class getColumnClass(int columnIndex) {
            return Boolean.class;
         }
      };
      for (int index = 0; index < 10; index++) {
         model.addRow(new Object[]{rnd.nextBoolean()});
      }
      table = new JTable(model);
      add(new JScrollPane(table));
      setTitle("JCheckBoxJTable Test");
      setSize(375, 250);
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      setLocationRelativeTo(null);
      setVisible(true);
   }

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

코드 설명

  • DefaultTableModel 익명 클래스: 모델 생성 시 getColumnClass() 메서드를 오버라이드하여 항상 Boolean.class를 반환합니다.
  • 랜덤 데이터 생성: 반복문을 통해 무작위 불리언 값(true/false)을 가진 10개의 행을 추가합니다.
  • 자동 렌더링: 열의 클래스가 Boolean으로 지정되었기 때문에 JTable이 각 셀을 자동으로 체크박스로 표시하며, 사용자가 클릭하여 값을 전환할 수 있습니다.

실행 결과

프로그램을 실행하면 아래와 같이 세 개의 열에 체크박스가 포함된 테이블이 화면에 나타납니다. 각 셀의 체크박스는 마우스 클릭으로 선택하거나 해제할 수 있습니다.

Java Swing JTable 셀에 체크박스(JCheckBox) 추가하는 방법