Các thành phần cơ bản trong Swing (Bài 2)

Các thành phần cơ bản trong Swing. Ngoài các thành phần mà chúng tôi đã giới thiệu trong bài Giới thiệu về Swing (Bài 1), hôm nay các bạn tiếp tục làm quen với các thành phần khác như JSlider, JProgressBar, JFormattedTextField, JOptionPane,…cũng được sử dụng nhiều trong quá trình thiết kế ứng dụng hỗ trợ giao diện đồ hoạ.

Các thành phần cơ bản trong Swing – JSlider

JSlider là một thành phần cho phép người dùng lựa chọn một giá trị số trong một phạm vi giới hạn bằng cách trượt thanh trượt.

cac thanh phan co ban trong swing 1

Một số phương thức thường dùng của JSlider

Tên Miêu tả
int value = getValue(); Lấy giá trị hiện tại
setValue(int value); Thiết lập giá trị hiện tại

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

cac thanh phan co ban trong swing 2

Các thành phần cơ bản trong Swing – JProgressBar

JProgressBar được sử dụng để hiển thị tiến trình xử lý bằng cách hiển thị tỷ lệ phần trăm hoàn thành. Thông thường thanh tiến trình được sử dụng trong màn hình splash để hiển thị trạng thái nạp dữ liệu của ứng dụng hoặc trong những xử lý đòi hỏi nhiều thời gian.

cac thanh phan co ban trong swing 5

Tạo JProgressBar trong NetBeans

cac thanh phan co ban trong swing 3

Tên Miêu tả
setMinimum(int n) Thiết lập giá trị nhỏ nhất
setMaximum(int n) Thiết lập giá trị lớn nhất
setValue(int n) Thiết lập giá trị hiện hành
int value = getValue(); Lấy giá trị hiện hành
setStringPainted(boolean b) Thiết lập hiển thị số phần trăm hoàn thành

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

cac thanh phan co ban trong swing 4

Các thành phần cơ bản trong Swing – JFormattedTextField

Tương tự như JTextField ngoại trừ chỉ chấp nhận những ký tự theo định dạng đã thiết lập trước. Có nhiều định dạng khác nhau như số (numeric), ngày (date) và tiền tệ (currency)

JFormattedTextField được sử dụng để xác thực dữ liệu mà người dùng nhập vào mà không cần phải viết code để xử lý.

Tạo JFormattedTextField trong NetBeans

cac thanh phan co ban trong swing 6

Tuỳ chỉnh định dạng (Customized Formatter)

cac thanh phan co ban trong swing 8

Bên dưới là bảng mask characters

Mask character

Miêu tả

# Một số bất kỳ
U Bất kỳ ký tự nào. Tất cả các ký tự được chuyển thành chữ hoa.
L Bất kỳ ký tự nào. Tất cả các ký tự được chuyển thành chữ thường.
A Một ký tự hoặc một số bất kỳ
? Bất kỳ ký tự nào
* Mọi thứ.

Ví dụ chỉ cho phép người dùng nhập một số có 4 chữ số

cac thanh phan co ban trong swing 9

Hình bên dưới là kết quả khi chạy ứng dụng

cac thanh phan co ban trong swing 7

Các thành phần cơ bản trong Swing – JOptionPane

JOptionPane được sử dụng để hiển thị hộp thoại đến người dùng. Tuỳ theo mục đích sử dụng mà hộp thoại đó có thể là một trong các loại sau đây

Tên Miêu tả
MessageDialog Hiển thị hộp thoại dạng thông báo
ConfirmDialog Hiển thị hộp thoại yêu cầu người dùng xác nhận (Yes/No)
InputDialog Hiển thị hộp thoại cho phép người dùng nhập thông tin
OptionDiglog Cho phép lập trình viên chỉnh sửa hộp thoại theo ý của mình.

Ví dụ sử dụng JOptionPane

cac thanh phan co ban trong swing 12

Xử lý mẫu – Xử lý sự kiện cho nút “Message Dialog”

JOptionPane.showMessageDialog(this, "Please input your name");

cac thanh phan co ban trong swing 13

Xử lý mẫu – Xử lý sự kiện cho nút “Input Dialog”

String yourName = JOptionPane.showInputDialog("Your name is");
 
if(yourName != null) {
 JOptionPane.showMessageDialog(this, "Your name is "+yourName);
}

cac thanh phan co ban trong swing 14

Xử lý mẫu – Xử lý sự kiện cho nút “Confirm Dialog”

int ret = JOptionPane.showConfirmDialog(this, "Are you sure?"
                              , "Confirm", JOptionPane.YES_NO_OPTION
                              , JOptionPane.QUESTION_MESSAGE);
 if(ret == JOptionPane.YES_OPTION) {
   //Xử lý trường hợp người dùng chọn Yes
 } else {
   //Xử lý trường hợp người dùng chọn No
 }

cac thanh phan co ban trong swing 15

Xử lý mẫu – Xử lý sự kiện cho nút “Option Dialog”

int ret = JOptionPane.showOptionDialog(this, 
                     "Do you want to print this document?", "Confirm"
                     ,JOptionPane.YES_NO_OPTION 
                     ,JOptionPane.QUESTION_MESSAGE, null
                     ,new String[] {"Đồng ý","Thoát"}, "Đồng ý");
 if(ret == JOptionPane.YES_OPTION) {
    //Xử lý trong trường hợp người dùng chọn "Đồng ý"
 } else {
    //Xử lý trong trường hợp người dùng chọn "Thoát"
 }

cac thanh phan co ban trong swing 16

Các thành phần cơ bản trong Swing – Bài tập thực hành.

Yêu cầu: Thiết kế giao diện và xử lý sự kiện cho các JSlider (JSlider cho Year, JSlider cho Month, JSlider cho Day)

cac thanh phan co ban trong swing 10

Gợi ý: Sử dụng chức năng Pre-Init Code và bổ sung đoạn code sau để xử lý hiển thị tháng dạng chuỗi (Jan, Feb, Mar, …..), trong đó sldMonth là tên của JSlider cho Month

String[] months = (new DateFormatSymbols()).getShortMonths();
Hashtable hashTable = new Hashtable(12);
for (int i = 0; i < 12; i++) {
 hashTable.put(new Integer(i+1), new JLabel(months[i],JLabel.CENTER));
}
sldMonth.setLabelTable(hashTable);

cac thanh phan co ban trong swing 11