Bảng đơn giản

Cũng giống như đối với cấu trúc cây, JTable không chi’ lưu trữ dữ liệu cùa riêng nó mà còn phài xác định » lô hình banạ cho những dữ liệu dó. Mô hình bàng ta sẽ đề cập ỡ phần sau.

Ví dụ 4.5. Trước tiên, ta xây dựng một bảng kiểu mầu bao gồm các đặc tính của các hành tinh trong Thái Dưong hệ. Một hành tinh là thề khí nếu nó chửa phần lớn chất hydrogen (hydro) và helium (heli). Bàng mô tả các hành tinh có các thuộc tính là các cột bao gồm: tên hành tinh (Planet), bán kính (Radius) theo đon vị km, số vệ tinh (Moons), có là thề khí (Gaseous) hay khồng và màu (Color). Bảng ờ hình 4.9 bao gồm các hành tinh: Mercury (Sao Thuỷ), Venus (Sao Kim), Earth (Trái Đất), Mars (Sao Hoả), Jupiter (Sao Mộc), Sarturn (Sao Thổ), Uranus (Sao Thiên Vương), Neptune (Sao Hải Vương) và Pluto (Sao Diêm Vương).

Thông thường dữ liệu của bảng được lưu dưới dạng một màng hai chiều, ví dụ

Objectn [] cells = {

{“Mercury”, new Double(2440), new Integer (0), Boolean.FALSE, Color, yellcw},

Bảng này gọi phương thúc toStringO tới từng đối tượng để hiển thị chúng ờ các cột. Vì thế, ta dễ hiểu cột màu sẽ hiển thị dạng java.awt .Golor[r = .. ,,g = …,b = …].

Tên của các cột có thể tổ chức thành mảng một chiều, ví dụ String[] columnNames = {

“Planet”, “Radius”, “Moons”, “Gaseous”, “Color”

};

Cuối cùng là tạo lập một bảng có dừ liệu tương ứng với mảng hai chiều cel 1 s và các cột có tên columnNames:

JTable table = new JTable(cells, columnNames);

Lệnh trên tạo ra bảng có số hàng, số cột bằng số hàng, số cột tương ứng cùa mảng cells với độ rộng của từng hàng mặc định là bằng nhau. Tất nhiên, sau đó ta có thể thay đổi vị trí, độ rộng của mỗi cột sao cho phù hợp nhất.

//PlanetT able.java

import java.awt.*; import j ava.awt.event.* ; import j avax.swing.*; import j avax.swing.table.* ;

public class PlanetTable{

public static void main(String args[]){

JFrame fr = new PlanetTableFrame(); fr.show();

}

}

class PIanetTableFrame extends JFrame

{

public PlanetTableFrame(){

setTitle (“Planet Table”); setSize ( 300, 200);

addWindowListener(new WindowAdapter(){

public void windowclosing(WindowEvent e){ System.exit(0);

});

// Tạo lập một bảng

JTable table = new JTable(cells, columnNames);

Container content = getContentPane();

content.add(new JScrollPane(table), “Center”);

}

// Định nghĩa màng dữ liệu để đưa vào bảng

private Object[] [] cells = {

{“Mercury”,         new       Double(2440) ,          new       Integer(0) ,

Boolean.FALSE, Color.yellow),

{“Venus”, new Double(6052) , new Integer (0), Boolean.FALSE, Color.yellow),

{“Earth”, new Double(6378), new Integer(1), Boolean.FALSE, Color.blue),

{“Mars”, new Double(3397) , new Integer(2), Boolean.FALSE, Color.red),

{“Jupiter”,           new       Double(71492),        new       Integer(16),

Boolean.TRUE, Color.orange),

{“Saturn”,           new       Double(60268),        new       Integer(18),

Boolean.TRUE, Color.orange),

{“Uranus”,          new       Double(25558),        new       Integer(17),

Boolean.TRUE, Color.blue),

{“Neptune”, new Double(24766), new Integer(8), Boolean.TRUE, Color.blue),

{“Pluto”, new Double(1137), new Integer(1), Boolean.FALSE, Color.black    )

};

// Định nghĩa dãy tên các cột của bàng

private string[] columnNames = {

“Planet”, “Radius”, “Moons”, “Gaseous”, “Color”

) ;

}

Lưu ý: Trên bảng ta có thể thực hiện một số chức năng:

  • Thay đổi kích cỡ cùa các cột, ta chì cần đặt con trò (cursor) giữa hai cột và di chuột để thay đổi độ rộng của từng cột cho phù hợp như hỉnh 4.8.
  • Thay đổi thứ tự của các cột bằng cách kích chuột vào tên cùa cột và di đến vị trí cần sắp xếp.