Java Tutorials - Cách sỠdụng Jtable trong Java - How to use tables in Java
Vá»›i lá»›p Jtable các bạn có thể hiển thị dữ liệu vá»›i dạng bảng, mặt khác còn cho phép ngưá»i dùng chỉnh sá»a dữ liệu, Jtable không chứ dữ liệu hoặc cache dữ liệu, nó chỉ lại má»™t đơn thuần là má»™t khuôn nhìn dữ liệu cá»§a các bạn. Dưới đây là hình minh há»a má»™t bảng vá»›i việc sá» dụng scroll pane.
Tạo một bảng đơn giản
Bảng trong
SimpleTableDemo.java khai báo các tên cột dưới dạng một mảng kiểu String (String array)
TrÃch:
String[] columnNames = {"First Name",
"Last Name",
"Sport",
"# of Years",
"Vegetarian"};
Dữ liệu trong mảng nà y được khởi tạo với một mảng đối tượng 2 chiểu (two-dimensional Object array)
TrÃch:
Object[][] data = {
{"Kathy", "Smith",
"Snowboarding", new Integer(5), new Boolean(false)},
{"John", "Doe",
"Rowing", new Integer(3), new Boolean(true)},
{"Sue", "Black",
"Knitting", new Integer(2), new Boolean(false)},
{"Jane", "White",
"Speed reading", new Integer(20), new Boolean(true)},
{"Joe", "Brown",
"Pool", new Integer(10), new Boolean(false)}
};
Sau đó bảng được xây dá»±ng vá»›i dữ liệu cá»§a data và tá»n cá»™t columnNames
TrÃch:
JTable table = new JTable(data, columnNames);
Có 2 hà m khởi tạo cá»§a Jtable mà nháºn trá»±c tiếp dữ liệu đó là :
TrÃch:
* JTable(Object[][] rowData, Object[] columnNames)
* JTable(Vector rowData, Vector columnNames)
Những Ä‘iểm thuáºn lợi cá»§a 2 hà m khởi tạo trên là chúng được sá» dụng má»™t các để dà ng, tuy nhiên chúng váºn có những khuyết Ä‘iểm :
- Các ô mặc định được cà i đặt là cho phép chỉnh sá»a (editable)
- Tất cả các kiểu dữ liệu là giống nhau, tất cả Ä‘á»u được đưa vá» kiểu chuá»—i. Và dụ, nếu cá»™t trong bảng có kiểu dữ liệu là Boolean, bảng có thể hiển thị dữ liệu trong má»™t há»™p kiểm tra (check box). Tuy nhiên, nếu bạn sá» dụng má»™t trong hai hà m khởi tạo JTable được liệt kê ở trên, dữ liệu Boolean cá»§a bạn được hiển thị như má»™t chuá»—i. Bạn có thể thấy sá»± khác biệt nà y trong cá»™t Vegetarian cá»§a bảng và dụ trên.
- Yêu cầu các bạn phải đặt tất cả dữ liệu trong má»™t array hoặc má»™t vertor, Ä‘iá»u nà y sẽ không thÃch hợp trong má»™t số trưá»ng hợp. Và dụ, nếu bạn khởi tạo má»™t táºp các đối tượng từ cÆ¡ sở dữ liệu, bạn có thể muốn truy vấn các đối tượng trá»±c tiếp cho các giá trị cá»§a há», hÆ¡n là sao chép tất cả các giá trị và o má»™t mảng hoặc vector.
--> Äể khắc phục được vấn đỠnà y các bạn có thể tham khảo tại "Creating a Table Model", sẽ được đỠcặp ở các phần sau.
Dưa bảng và o Container
Äây là má»™t Ä‘oạn code đơn giản giúp tạo scroll pane xem như là Container cá»§a bảng
TrÃch:
JScrollPane scrollPane = new JScrollPane(table);
table.setFillsViewportHeight(true);
Hai đoạn mã trên dùng để là m các công việc sau :
- Hà m khởi tạo cá»§a JScrollPane có tham số là bảng, nó sẽ tạo ra má»™t JScrollPane đồng thá»i tá»± động thêm bảng và o JScrollPane.
- JTable.setFillsViewportHeight được gá»i để thiết láºp thuá»™c tÃnh fillsViewportHeight. Khi giá trị nà y là TRUE tức là sá» dụng toà n bá»™ chiá»u cao cá»§a container, ngay cả khi bảng không có đủ hà ng để sá» dụng toà n bá»™ không gian dá»c. và sẽ tạo ra thà nh cuá»™n để ngưá»i dùng có thể để dà ng thao tác
Scroll pane tự độn đặt tiêu đỠcủa bảng ở trên cùng, ngay cả khi chúng ta kéo thanh cuộn xuống dưới, tiêu đỠcủa bảng vẫn luôn luôn được nhìn thấy.
Cà i đặt và thay đổi độ rộng của cột
Mặc địch, độ rá»™ng cá»§a các cá»™t trong jtable là bằng nhau, ngay cả khi có sá»± tác động cá»§a ngưá»i dùng, thay đỗi độ rá»™ng cá»§a các cá»™t, các cá»™t cÅ©ng sẽ được thay đổi tương ứng
Äể thay đổi độ rá»™ng mặc định cá»§a cá»™t, bạn cần sá» dụng hà m setPreferredWidth cho từng cá»™t trên bảng cá»§a các bạn. Và dụ thêm Ä‘oạn code sau và o SimpleTableDemo để tăng chiểu rá»™ng cá»§a cá»™t thứ 3 lÆ¡n hÆ¡n các cá»™t còn lại.
TrÃch:
TableColumn column = null;
for (int i = 0; i < 5; i++) {
column = table.getColumnModel().getColumn(i);
if (i == 2) {
column.setPreferredWidth(100); //cột thứ 3 sẽ rộng hơn
} else {
column.setPreferredWidth(50);
}
}
Sá» dụng Selections (cách chá»n dữ liệu trên bảng)
Các chủ đỠkhác cùng chuyên mục nà y: