Rate this post

Lớp JTable được sử dụng để hiển thị dữ liệu dưới dạng bảng. Nó bao gồm các hàng và cột.

Giới thiệu về JTable

JTable là một thành phần quan trọng trong giao diện người dùng của Java Swing, cho phép hiển thị dữ liệu theo dạng bảng. Nó cung cấp khả năng hiển thị và chỉnh sửa dữ liệu dễ dàng trong các hàng và cột.

JTable hỗ trợ nhiều tính năng mạnh mẽ như:

  • Hiển thị dữ liệu từ một nguồn dữ liệu như mảng, danh sách, hoặc cơ sở dữ liệu.
  • Cho phép sắp xếp, lọc và tìm kiếm dữ liệu trong bảng.
  • Thực hiện các thao tác chỉnh sửa dữ liệu như thêm, xóa và cập nhật dữ liệu.
  • Tùy chỉnh giao diện của bảng như màu sắc, font chữ, kích thước cột, hàng, header.
  • Xử lý các sự kiện liên quan đến bảng như khi người dùng chọn một hàng, một cột, hay thay đổi giá trị trong bảng.

JTable là một thành phần mạnh mẽ và linh hoạt, được sử dụng rộng rãi trong các ứng dụng desktop Java để hiển thị và quản lý dữ liệu dạng bảng.

Xem thêm Java Swing Tutorial – hướng dẫn

Khai báo Class JTable

Hãy xem phần khai báo cho lớp javax.swing.JTable.

Các bài viết liên quan:

Các Constructor thường được sử dụng:

ConstructorDescription
JTable()Tạo một bảng với các ô trống.
JTable(Object[][] rows, Object[] columns)Tạo một bảng với dữ liệu được chỉ định.

Tạo JTable đơn giản

Để tạo một JTable đơn giản trong Java Swing, bạn có thể làm như sau:

  1. Tạo một đối tượng DefaultTableModel để lưu trữ dữ liệu của bảng:
DefaultTableModel model = new DefaultTableModel();
  1. Thêm các cột vào bảng bằng phương thức addColumn():
model.addColumn("Column 1");
model.addColumn("Column 2");
model.addColumn("Column 3");
  1. Thêm các dòng dữ liệu vào bảng bằng phương thức addRow():
model.addRow(new Object[]{"Data 1", "Data 2", "Data 3"});
model.addRow(new Object[]{"Data 4", "Data 5", "Data 6"});
  1. Tạo một đối tượng JTable và gán mô hình dữ liệu cho nó:
JTable table = new JTable(model);
  1. Đặt JTable vào một JScrollPane để cho phép cuộn nếu cần:
JScrollPane scrollPane = new JScrollPane(table);
  1. Thêm JScrollPane vào giao diện của ứng dụng:
frame.add(scrollPane);

Trong đó, frame là đối tượng JFrame của ứng dụng.

Sau khi thực hiện các bước trên, bạn sẽ có một JTable đơn giản hiển thị dữ liệu theo cấu trúc và nội dung đã định nghĩa. Bạn có thể tùy chỉnh giao diện và thao tác với dữ liệu trong JTable theo nhu cầu của ứng dụng.

Xem thêm Java JToggleButton

Hiển thị dữ liệu trong JTable

Để hiển thị dữ liệu trong JTable, bạn cần tạo một đối tượng DefaultTableModel và thêm các dòng dữ liệu vào mô hình đó. Dưới đây là một ví dụ đơn giản:

import javax.swing.*;
import javax.swing.table.DefaultTableModel;

public class JTableExample {
    public static void main(String[] args) {
        // Tạo dữ liệu mảng 2 chiều chứa dữ liệu
        Object[][] data = {
                {"John", 25, "USA"},
                {"Anna", 30, "Germany"},
                {"Peter", 35, "UK"},
                {"Mary", 28, "Canada"}
        };

        // Tạo mảng chuỗi chứa tên cột
        String[] columnNames = {"Name", "Age", "Country"};

        // Tạo đối tượng DefaultTableModel với dữ liệu và tên cột
        DefaultTableModel model = new DefaultTableModel(data, columnNames);

        // Tạo đối tượng JTable và gán mô hình dữ liệu
        JTable table = new JTable(model);

        // Tạo đối tượng JScrollPane và gán JTable vào để cuộn nếu cần
        JScrollPane scrollPane = new JScrollPane(table);

        // Tạo JFrame và thêm JScrollPane vào giao diện
        JFrame frame = new JFrame("JTable Example");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(scrollPane);
        frame.pack();
        frame.setVisible(true);
    }
}

Trong ví dụ trên, chúng ta tạo một mảng 2 chiều chứa dữ liệu và một mảng chuỗi chứa tên cột. Sau đó, chúng ta tạo một đối tượng DefaultTableModel với dữ liệu và tên cột đã có. Cuối cùng, chúng ta tạo JTable và gán mô hình dữ liệu cho nó, sau đó đặt JTable vào trong JScrollPane và thêm nó vào giao diện JFrame.

Khi chạy chương trình, bạn sẽ thấy JTable hiển thị dữ liệu trong bảng theo cấu trúc và nội dung đã xác định.

Xem thêm Java JComponent

Tùy chỉnh giao diện của JTable

Để tùy chỉnh giao diện của JTable, bạn có thể sử dụng các lớp Renderer và Editor được cung cấp bởi Java Swing. Dưới đây là một số ví dụ về cách tùy chỉnh giao diện của JTable:

  1. Tùy chỉnh màu sắc nền và văn bản trong ô của JTable:
import javax.swing.*;
import javax.swing.table.DefaultTableCellRenderer;
import java.awt.*;

public class JTableCustomization {
    public static void main(String[] args) {
        JTable table = new JTable(4, 4);

        // Tạo một đối tượng renderer để tùy chỉnh màu sắc và văn bản
        DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();
        renderer.setBackground(Color.YELLOW);
        renderer.setForeground(Color.BLUE);
        renderer.setFont(new Font("Arial", Font.BOLD, 14));

        // Áp dụng renderer cho tất cả các ô trong JTable
        table.setDefaultRenderer(Object.class, renderer);

        JFrame frame = new JFrame("JTable Customization");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(new JScrollPane(table));
        frame.pack();
        frame.setVisible(true);
    }
}

Trong ví dụ trên, chúng ta tạo một JTable với 4 hàng và 4 cột. Sau đó, chúng ta tạo một đối tượng DefaultTableCellRenderer để tùy chỉnh màu nền, màu văn bản và font chữ của các ô trong JTable. Cuối cùng, chúng ta áp dụng renderer đã tạo cho tất cả các ô trong JTable bằng cách sử dụng phương thức setDefaultRenderer().

  1. Tùy chỉnh độ rộng cột và chiều cao hàng của JTable:
import javax.swing.*;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableColumnModel;

public class JTableCustomization {
    public static void main(String[] args) {
        JTable table = new JTable(4, 4);

        // Tạo đối tượng TableColumnModel để tùy chỉnh độ rộng cột và chiều cao hàng
        TableColumnModel columnModel = table.getColumnModel();
        columnModel.getColumn(0).setPreferredWidth(100);
        columnModel.getColumn(1).setPreferredWidth(150);
        table.setRowHeight(30);

        JFrame frame = new JFrame("JTable Customization");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(new JScrollPane(table));
        frame.pack();
        frame.setVisible(true);
    }
}

Trong ví dụ này, chúng ta sử dụng đối tượng TableColumnModel để tùy chỉnh độ rộng của các cột bằng phương thức setPreferredWidth(). Chúng ta cũng sử dụng phương thức setRowHeight() để tùy chỉnh chiều cao của các hàng trong JTable.

Các ví dụ trên chỉ là một số cách tùy chỉnh giao diện của JTable. Bạn có thể thực hiện nhiều tùy chỉnh khác nhau bằng cách sử dụng các Renderer và Editor khác nhau được cung cấp bởi Swing, hoặc thậm chí tạo Renderer và Editor tùy chỉnh của riêng bạn.

Xem thêm Cách sử dụng ToolTip trong Java Swing

Ví dụ Java JTable

Output:

Ví dụ Java JTable với ListSelectionListener

Output:

Nếu bạn chọn một phần tử trong cột NAME , tên của phần tử sẽ được hiển thị trên bảng điều khiển:

Thành phần bảng được chọn là: Sachin  

Bây giờ chúng tôi đang sử dụng một mô hình để điền dữ liệu. Đoạn mã này trước tiên mở rộng lớp DefaultTableModel để tạo một phiên bản ẩn danh. Điều này là cần thiết vì chúng tôi đang ghi đè 2 phương thức:

Một là phương thức isCellEditable () mà từ đó chúng ta trả về false. Điều này chỉ đơn giản là bảng không thể chỉnh sửa được. Đây là một thay đổi đơn giản.

Phương thức tiếp theo là phương thức getColumnClass () . Cột Index được chuyển cho phương thức này. Chúng ta cần chỉ ra cho bảng biết lớp dữ liệu được đại diện bởi. Như chúng ta đã biết, các giá trị String được đại diện bởi lớp java.lang.String. Do đó, chúng tôi chỉ chỉ ra các kiểu thông qua lớp.

Thông tin này được giữ trong một biến mảng có tên là columnClass . Các loại lớp được khai báo tương ứng với các giá trị dữ liệu mà chúng được cho là hiển thị. Ví dụ, giá trị đầu tiên là Integer.class . Đây là vì cột đầu tiên là ‘id’ được cho là hiển thị các giá trị số nguyên. Tương tự như vậy, cột thứ ba ‘tỷ lệ hàng giờ’ sẽ hiển thị các giá trị thập phân và do đó, kiểu được khai báo là Double .

Cuối cùng, JTable được tạo bằng cách sử dụng hàm tạo lấy một thể hiện của TableModel . Trong trường hợp này, chúng tôi chuyển biến mô hình mà chúng tôi đã tạo dưới dạng một phiên bản ẩn danh.

Xem thêm Thay đổi TitleBar icon trong Java AWT và Swing

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Contact Me on Zalo
Call now