Các thành phần swing nâng cao (Bài 5)
Các thành phần swing nâng cao (Advance Swing Controls) kế tiếp bài học các thành phần cơ bản trong Swing. Trong bài học này, chúng tôi sẽ giới thiệu đến bạn đọc các thành phần Swing nâng cao như JList, JTable, JTree, JTabbedPane, …
Các thành phần này là gì và cách sử dụng như thế nào, mời các bạn đi vào nội dung chi tiết bên dưới.
Các thành phần swing nâng cao – JTabbedPane
JTabbedPane là một thành phần cho phép các lập trình viên thêm một số container như JPanel trong một cửa sổ duy nhất. Mỗi thành phần được thêm vào JTabbedPane tương ứng với một tab. Hình bên dưới là một ví dụ về Tabbed Pane
Tạo Tabbed Pane với NetBeans
Thêm Panel vào Tabbed Pane
Sau khi thêm Panel vào, chúng ta tiến hành thiết kế giao diện bằng cách chọn các thành phần trong Swing Controls và đặt vào Panel. Nếu bạn muốn thêm một Panel khác vào Tabbed Pane thì cách thực hiện tương tự như lúc thêm Panel đầu tiên.
Thay đổi text cho tab
Các thành phần swing nâng cao – JList
JList được sử dụng để hiển thị một nhóm các item. Và nó cho phép chọn một hoặc nhiều item. Các item trong JList được hiển thị trong một hoặc nhiều dòng.
Đăng ký sự kiện cho JList
Chuột phải vào JList -> chọn Events -> chọn ListSelection -> chọn valueChanged
Lấy dữ liệu của dòng được chọn trong JList
String data = (String)jList2.getSelectedValue();
Trong đó jList2 là tên của JList, data là biến chứa dữ liệu của dòng được chọn
Các thành phần swing nâng cao – JTable
JTable là một thành phần cho phép hiển thị dữ liệu theo dòng (row) và cột (column). Giao nhau giữa dòng và cột được gọi là ô (cell) và đây là nơi hiển thị dữ liệu. Một JTable có 2 phần là Column Header (tiêu đề) và Data (dữ liệu).
Tạo JTable sử dụng NetBeans
Đăng ký sự kiện cho JTable
Chuột phải vào JTable -> chọn Events -> chọn Mouse -> chọn mouseClicked
Lấy dữ liệu của ô được chọn trong JTable
int col = jTable2.getSelectedColumn(); int row = jTable2.getSelectedRow(); String data = (String)jTable2.getValueAt(row, col);
Trong đó jTable2 là tên của JTable, data là biến chứa dữ liệu của ô được chọn
Các thành phần swing nâng cao – JTree
JTree là một thành phần được sử dụng để hiển thị dữ liệu một cách có thứ bậc (hierarchical). JTree thường được sử dụng để hiển thị hệ thống tập tin của hệ điều hành hoặc hệ thống phân cấp của một tổ chức, …
JTree hiển thị dữ liệu theo chiều dọc, mỗi dòng chỉ chứa một item gọi là node. Mỗi JTree phải có một node gốc (root node) ở trên cùng, tất cả các node khác đi xuống từ node gốc.
Tạo JTree sử dụng NetBeans
Đăng ký sự kiện cho JTree
Chuột phải vào JTree -> chọn Events -> chọn Mouse -> chọn mouseClicked
Lấy đường dẫn của một node trong JTree
TreePath tp = jTree1.getPathForLocation(evt.getX(), evt.getY()); if (tp!=null) { String path = tp.toString(); }
Trong đó jTree1 là tên của JTree, path là biến chứa đường dẫn của node được chọn
Các thành phần swing nâng cao – JColorChooser
JColorChooser được sử dụng để hiển thị hộp thoại màu và cho phép người dùng lựa chọn một màu trong hộp thoại đó. Có 2 cách để tạo JColorChooser trong NetBeans đó là sử dụng chế độ Design và kéo JColorChooser từ Swing Windows của Palette. Hai là sử dụng code để hiển thị JColorChooser khi người dùng click vào button hoặc textfield, …Lập trình viên sử dụng cách nào còn tuỳ thuộc vào yêu cầu cụ thể.
Cách 1: Sử dụng chế độ Design
Đăng ký sự kiện cho JColorChooser đối với cách 1
Bước 1: Cài đặt giao tiếp ChangeListener tại class có sử dụng JColorChooser
public class YourClassName extends implements ChangeListener
Bước 2: Đăng ký sự kiện cho JColorChooser
jColorChooser1.getSelectionModel().addChangeListener(this);
Trong đó jColorChooser1 là tên của JColorChooser
Bước 3: Viết xử lý cho phương thức stateChanged (Đây là phương thức của giao tiếp ChangeListener)
@Override public void stateChanged(ChangeEvent e) { //Lấy màu mà người dùng đã chọn từ JColorChooser Color c = jColorChooser1.getColor(); }
Cách 2: Viết code
//Tạo đối tượng JColorChooser JColorChooser jcc = new JColorChooser(); //Hiển thị hộp thoại //Color showDialog(Component component,String title, Color initialColor); //Màu mà người dùng chọn được chứa trong biến c Color c =jcc.showDialog(this, "Color dialog", Color.yellow);
Các thành phần swing nâng cao – Bài tập thực hành
Thiết kế giao diện và cài đặt xử lý cho ứng dụng sau
Tab thứ nhất (Login)
Tab thứ hai (Main form)