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: