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

Java JTable에서 '레코드 없음' 메시지를 표시하는 방법

JTableJComponent 클래스의 하위 클래스로, 정보를 여러 행(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)에도 동일한 안내 문구를 배치해 사용자에게 명확하게 상태를 전달할 수 있습니다.

실행 결과

Java JTable에서  레코드 없음  메시지를 표시하는 방법

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