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

Java에서 JTable의 각 열 너비를 변경하는 방법


JTable이란?

  • JTable은 복잡한 데이터 구조를 화면에 표시하기 위해 사용되는 JComponent의 하위 클래스입니다.
  • JTable은 데이터를 행(row)열(column) 형태로 표시할 때 MVC(Model View Controller) 디자인 패턴을 따릅니다.
  • DefaultTableModel 클래스는 AbstractTableModel을 확장하며, 이를 활용하면 JTable에 행과 열을 동적으로 추가할 수 있습니다.
  • DefaultTableCellRenderer 클래스는 JLabel 클래스를 확장한 것으로, JTable 셀 안에 이미지, 색상이 적용된 텍스트 등을 표시하는 데 사용할 수 있습니다.
  • JTable은 TableModelListener, TableColumnModelListener, ListSelectionListener, CellEditorListener, RowSorterListener 등 다양한 리스너 인터페이스를 통해 이벤트를 처리할 수 있습니다.
  • 기본적으로 JTable의 열 너비는 고정되어 있지만, JTable 클래스의 table.getColumnModel().getColumn().setPreferredWidth() 메서드를 사용하면 각 열의 너비를 자유롭게 조정할 수 있습니다.

예제 코드

import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;
public class JTableTest extends JFrame {
    private JTable table;
    private JScrollPane scrollPane;
    private DefaultTableModel model;
    private DefaultTableCellRenderer cellRenderer;
    public JTableTest() {
        setTitle("JTable Test");
        setLayout(new FlowLayout());
        scrollPane = new JScrollPane();
        JTable table = new JTable();
        scrollPane.setViewportView(table);
        model = (DefaultTableModel)table.getModel();
        model.addColumn("S.No");
        model.addColumn("First Name");
        model.addColumn("Last Name");
        model.addColumn("Email");
        model.addColumn("Contact");
        for(int i = 0;i < 4; i++) {
            model.addRow(new Object[0]);
            model.setValueAt(i+1, i, 0);
            model.setValueAt("Tutorials", i, 1);
            model.setValueAt("Point", i, 2);
            model.setValueAt("@tutorialspoint.com", i, 3);
            model.setValueAt("123456789", i, 4);
        }
        // 각 열의 너비 설정
        table.getColumnModel().getColumn(0).setPreferredWidth(5);
        table.getColumnModel().getColumn(3).setPreferredWidth(100);
        cellRenderer = new DefaultTableCellRenderer();
        cellRenderer.setHorizontalAlignment(JLabel.CENTER);
        table.getColumnModel().getColumn(0).setCellRenderer(cellRenderer);
        add(scrollPane);
        setSize(475, 250);
        setResizable(false);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        setVisible(true);
    }
    public static void main(String[] args) {
        new JTableTest();
    }
}

실행 결과

Java에서 JTable의 각 열 너비를 변경하는 방법

위 예제에서는 getColumn(0).setPreferredWidth(5)를 호출하여 첫 번째 열(번호 열)의 너비를 좁게 설정하고, getColumn(3).setPreferredWidth(100)을 호출하여 네 번째 열(이메일 열)의 너비를 넓게 설정했습니다. 이처럼 setPreferredWidth() 메서드에 원하는 픽셀 값을 전달하면 각 열의 너비를 손쉽게 조절할 수 있습니다.