JTable은 복잡한 데이터 구조를 화면에 표시하기 위해 사용되는 JComponent 클래스의 하위 클래스입니다. JTable 컴포넌트는 MVC(Model View Controller) 디자인 패턴을 따르며, 데이터를 행과 열 형태로 깔끔하게 보여줍니다.
JTable은 TableModelListener, TableColumnModelListener, ListSelectionListener, CellEditorListener, RowSorterListener 등 다양한 리스너 인터페이스를 통해 이벤트를 처리할 수 있습니다.
setAutoCreateRowSorter()로 열 정렬 구현하기
JTable에서 특정 열을 기준으로 정렬하려면 setAutoCreateRowSorter() 메서드를 호출하고 인자로 true를 전달하면 됩니다. 이 설정을 적용하면 사용자가 테이블 헤더(열 제목)를 클릭할 때마다 해당 열을 기준으로 오름차순 또는 내림차순 정렬이 자동으로 수행됩니다.
예제 코드
import java.awt.*;
import javax.swing.*;
public final class JTableSorterTest extends JFrame {
private JTable table;
private JScrollPane scrollPane;
public JTableSorterTest() {
setTitle("JTableHeaderHide Test");
String[] columnNames = {"Name", "Age", "City"};
Object[][] data = {
{"Raja", "35", "Hyderabad"},
{"Adithya", "25", "Chennai"},
{"Vineet", "23", "Mumbai"},
{"Archana", "32", "Pune"},
{"Krishna", "30", "Kolkata"}
};
table = new JTable(data, columnNames);
scrollPane = new JScrollPane(table);
table.setAutoCreateRowSorter(true); // 특정 열 기준 행 정렬 활성화
add(scrollPane, BorderLayout.CENTER);
setSize(375, 250);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main(String[] args) {
new JTableSorterTest();
}
}실행 결과

위 코드를 실행하면 이름, 나이, 도시 열의 헤더를 클릭할 때마다 해당 열의 데이터가 정렬됩니다. 같은 헤더를 다시 클릭하면 정렬 방향이 오름차순에서 내림차순으로 전환됩니다.
참고: TableRowSorter를 활용한 세부 제어
기본 정렬 기능만으로는 부족하고 더 세밀한 제어가 필요하다면 TableRowSorter 객체를 직접 생성하여 사용할 수도 있습니다.
TableRowSorter<TableModel> sorter = new TableRowSorter<>(table.getModel()); table.setRowSorter(sorter); sorter.setSortKeys(List.of(new RowSorter.SortKey(0, SortOrder.ASCENDING))); // 첫 번째 열 기준 오름차순 정렬
이처럼 setAutoCreateRowSorter()는 간단한 정렬 기능을 손쉽게 추가할 수 있는 가장 빠른 방법이며, 별도의 외부 라이브러리 없이 Swing에서 기본적으로 제공되는 기능입니다.