Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Cách thay đổi độ rộng từng cột của JTable trong Java

JTable

  • JTable là một lớp con của JComponent để hiển thị cấu trúc dữ liệu phức tạp.
  • JTable tuân theo mẫu thiết kế Model View Controller (MVC) để hiển thị dữ liệu theo hàng và cột.
  • Lớp DefaultTableModel mở rộng AbstractTableModel và dùng để thêm hàng, cột vào JTable động.
  • Lớp DefaultTableCellRenderer mở rộng JLabel và dùng để thêm hình ảnh, văn bản có màu vào ô JTable.
  • JTable có thể tạo các giao diện TableModelListener, TableColumnModelListener, ListSelectionListener, CellEditorListener, RowSorterListener.
  • Mặc định độ rộng JTable cố định, ta có thể thay đổi độ rộng mỗi cột bằng phương thức table.getColumnModel().getColumn().setPreferredWidth().

Ví dụ

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);
        }

        // set the column width for each column
        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();
    }
}

Kết quả

Cách thay đổi độ rộng từng cột của JTable trong Java