JTable은 복잡한 데이터 구조를 화면에 표시하기 위해 JComponent 클래스를 상속받은 컴포넌트입니다. JTable은 모델-뷰-컨트롤러(MVC) 디자인 패턴을 따르며, 데이터를 행과 열 형태로 깔끔하게 보여줄 수 있습니다.
DefaultTableModel 클래스는 AbstractTableModel의 하위 클래스로, JTable에 행과 열을 동적으로 추가할 때 사용됩니다. 또한 DefaultTableCellRenderer 클래스는 JLabel 클래스를 확장하여 셀 안에 이미지, 색상이 적용된 텍스트 등을 넣을 수 있게 해줍니다.
JTable의 테이블 헤더는 아주 간단한 방법으로 제어할 수 있습니다. JCheckBox의 선택을 해제하면 헤더가 숨겨지고, 체크박스를 클릭하면 헤더가 다시 표시되도록 구현할 수 있습니다. 핵심은 JScrollPane의 getColumnHeader() 메서드로 반환되는 뷰포트의 가시성(visibility)을 변경하는 것입니다.
예제 코드
import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;
public final class JTableHeaderHideTest extends JPanel {
private final String[] columnNames = {"String", "Integer", "Boolean"};
private final Object[][] data = {{"Tutorials Point", 100, true}, {"Tutorix", 200, false},
{"Tutorials Point", 300, true}, {"Tutorix", 400, false}};
private final TableModel model = new DefaultTableModel(data, columnNames) {
@Override
public Class> getColumnClass(int column) {
return getValueAt(0, column).getClass();
}
};
private final JTable table = new JTable(model);
private final JScrollPane scrollPane = new JScrollPane(table);
public JTableHeaderHideTest() {
super(new BorderLayout());
add(scrollPane);
JCheckBox check = new JCheckBox("JTableHeader visible: ", true);
check.addActionListener(ae -> {
JCheckBox cb = (JCheckBox) ae.getSource();
scrollPane.getColumnHeader().setVisible(cb.isSelected());
scrollPane.revalidate();
});
add(check, BorderLayout.NORTH);
}
public static void main(String[] args) {
JFrame frame = new JFrame("JTableHeaderHide Test");
frame.setSize(375, 250);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new JTableHeaderHideTest());
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}코드 설명
- DefaultTableModel: 문자열, 정수, 불리언 타입의 데이터를 담은 행과 열을 정의합니다.
getColumnClass()를 오버라이드하면 Boolean 값이 체크박스로 렌더링됩니다. - JCheckBox 액션 리스너: 체크박스의 선택 상태에 따라
scrollPane.getColumnHeader().setVisible()를 호출하여 테이블 헤더를 표시하거나 숨깁니다. - revalidate(): 가시성 변경 후 레이아웃을 다시 계산하여 화면에 즉시 반영합니다.
실행 결과
테이블 헤더가 표시된 상태

테이블 헤더가 숨겨진 상태

체크박스를 클릭할 때마다 테이블 상단의 헤더 영역이 나타났다 사라지는 것을 확인할 수 있습니다. 이 방법은 사용자가 화면 공간을 조절하고 싶을 때 유용하게 활용할 수 있습니다.