JTable은 JComponent 클래스의 하위 클래스로, 정보를 여러 행(row)과 열(column) 형태로 표시하는 테이블을 만들 때 사용됩니다. JTable에서 값이 선택되면 TableModelEvent가 발생하며, 이 이벤트는 TableModelListener 인터페이스를 구현하여 처리할 수 있습니다.
아래 예제 프로그램에서는 JTable에 표시할 데이터 행이 존재하지 않을 경우 "No records available"(레코드가 없습니다)라는 텍스트를 화면에 출력하는 방법을 보여줍니다.
예제 코드
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
public class NoRecordTableTest extends JFrame {
private JPanel panel;
private JTable table;
private JScrollPane scrollPane;
public NoRecordTableTest() {
panel = new JPanel();
panel.setLayout(new BorderLayout());
String columnNames[] = {"Column 1", "Column 2", "Column 3"};
String dataValues[][] = {};
table = new JTable(dataValues, columnNames);
JLabel label = new JLabel("No records available");
label.setSize(label.getPreferredSize());
table.add(label);
table.setFillsViewportHeight(true);
scrollPane = new JScrollPane(table);
panel.add(scrollPane, BorderLayout.CENTER);
panel.add(new Label("No records available"), BorderLayout.SOUTH);
add(panel);
setSize(400, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main(String args[]) {
new NoRecordTableTest();
}
}
주요 포인트 설명
- 빈 데이터 배열:
String dataValues[][] = {};처럼 빈 2차원 배열을 전달하면 테이블에 표시할 행이 없는 상태가 됩니다. - JLabel 추가: 테이블 컴포넌트에 직접
JLabel을 추가하여 데이터가 없을 때 안내 문구를 보여줍니다. - setFillsViewportHeight(true): 데이터가 적거나 없어도 테이블이 스크롤 영역 전체를 채우도록 설정하여 빈 공간에 메시지가 자연스럽게 나타나게 합니다.
- BorderLayout 활용: 하단(SOUTH)에도 동일한 안내 문구를 배치해 사용자에게 명확하게 상태를 전달할 수 있습니다.
실행 결과

이와 같은 방식으로 데이터가 비어 있는 상황에서도 사용자에게 친절한 안내 메시지를 제공하여 UI 완성도를 높일 수 있습니다.