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, hôm nay 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

cac thanh phan swing nang cao 5

Tạo Tabbed Pane với NetBeans

cac thanh phan swing nang cao 1

Thêm Panel vào Tabbed Pane

cac thanh phan swing nang cao 2

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.

cac thanh phan swing nang cao 4

Thay đổi text cho tab

cac thanh phan swing nang cao 3

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.

cac thanh phan swing nang cao 6

Đăng ký sự kiện cho JList

Chuột phải vào JList -> chọn Events -> chọn ListSelection -> chọn valueChanged

cac thanh phan swing nang cao 7

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

cac thanh phan swing nang cao 8

Đăng ký sự kiện cho JTable

Chuột phải vào JTable -> chọn Events -> chọn Mouse -> chọn mouseClicked

cac thanh phan swing nang cao 9

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

cac thanh phan swing nang cao 10

Đăng ký sự kiện cho JTree

Chuột phải vào JTree -> chọn Events -> chọn Mouse -> chọn mouseClicked

cac thanh phan swing nang cao 11

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

cac thanh phan swing nang cao 12

Đă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)

cac thanh phan swing nang cao 13

Tab thứ hai (Main form)

cac thanh phan swing nang cao 14