Java: JSlider
JSlider là 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 di chuyển slider trên thanh trượt. Thành phần này đảm bảo rằng giá trị của người sử dụng được lựa chọn sẽ luôn luôn ở trong phạm vi chỉ định. Ví dụ về cách sử dụng thanh trượt là "Speaker Volume" và "giá trị RGB cho tạo bóng cho màu".
Lợi thế của việc sử dụng một thanh trượt là để đưa ra một giá trị số là bạn có thể xem trước bằng đồ họa hiệu ứng của việc xác định giá trị một cách động.
Hình 1 dưới đây hiển thị một thanh trượt.
Hình 1: Thanh trượt
Lưu ý: JSlider cho phép vẽ các stick và các nhãn, các stick có thể lớn và nhỏ, định hướng trượt có thể là ngang hoặc dọc.
Hàm tạo của JSlider
JSlider có thể được tạo bằng cách sử dụng một trong các hàm tạo như thể hiện dưới đây.
- JSlider(): Tạo một thanh trượt ngang trong khoảng từ 0 đến 100 và giá trị mặc định là 50. Ví dụ:
- JSlider(int orient): Tạo một thanh trượt bằng cách sử dụng sự định hướng theo quy định trong khoảng 0-100 và giá trị mặc định là 50. Đối số orient làm một trong các giá trị sau: SwingConstants.HORIZONTAL và SwingConstants.VERTICAL. Ví dụ:
- JSlider(int min, int max): Tạo một thanh trượt ngang sử dụng các đối số min và max làm khoảng giá trị cụ thể và giá trị mặc định là 50. Ví dụ:
- JSlider(int min, int max, int value): Tạo một thanh trượt ngang với khoảng giá trị là từ min đến max, giá trị mặc định là value. Ví dụ:
- JSlider(int orient, int min, int max, int value): Tạo một thanh trượt hướng là orient, khoảng giá trị là từ min đến max, và giá trị mặc định ban đầu là value. Đối số orient là một trong các giá trị SwingConstants.HORIZONTAL hoặc SwingConstants.VERTICAL. Ví dụ:
Các phương thức của JSlider
Dưới đây là danh sách các phương thức của JSlider.
- public int getValue(): Trả về vị trí hiện thời của slider trong thanh trượt. Ví dụ:
- public void setValue(int value): Thiết lập vị trí của slider trên thanh trượt là value. Tham số value nên trong khoảng giá trị của thanh trượt. Ví dụ:
- public void setOrientation (int orient): Thiết lập hướng của thanh trượt là ngang hoặc dọc qua tham số orient. Ví dụ:
- public void setMajorTickSpacing(int spacing): Được sử dụng để thiết lập tick với khoảng cách lớn là spacing. Ví dụ:
- public void setMinorTickSpacing (int spacing): Được sử dụng để thiết lập tick với khoảng cách nhỏ là spacing. Ví dụ:
- public void setPaintTicks(boolean b): Hiển thị tick trên thanh trượt nếu đối số b là true. Ví dụ:
- public void setPaintTrack(boolean b): Xác định rằng track của thanh trượt nên được vẽ nếu đối số b=true. Ví dụ:
- public void setSnapToTicks(boolean b): Dịch slider đến tick gần mỗi khi người dùng trượt nếu b=true, nếu b=false thì slider di chuyển tự do trên thanh trượt.
- public void setPaintLabels(boolean b): Nếu b=true thì sẽ đánh dấu nhãn chính của thanh trượt được vẽ.
Xử lý sự kiện
Một thành phần JSlider sẽ lắng nghe bằng cách sử dụng giao diện javax.swing.event.ChangeListener. Một JSlider có phương thức addChangeListenert hoặc đăng ký một bộ lắng nghe. Phương thức này được sử dụng để đăng ký một bộ lắng nghe với thanh trượt.
Giao diện ChangeListener có một phương thức là stateChanged. Mỗi khi bạn di chuyển slider thì thanh trượt sẽ kích hoạt một sự kiện và quyền kiểm soát được chuyển cho phương thức này.
Ứng dụng của bạn có thể phản ứng với sự kiện này và có hành động thích hợp. Để lấy giá trị hiện tại của thanh trượt, bạn sử dụng phương thức getValue().
Đoạn mã dưới đây thể hiện cách để thêm bộ lắng nghe vào thanh trượt.
. . .
JSlider sdrSlider
JSliderDemo() {
sdrSlider = new JSlider(JSlider.HORIZONTAL, -50, 50, 0);
sdrSlider.setPaintTicks(true);
sdrSlider.setMajorTickSpacing(20);
sdrSlider.setMinorTickSpacing(10);
sdrSlider.setPaintLabels(true);
// Registers the ChangeListener
sdrSlider.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
System.out.println(“Slider: “ + sdrSlider.getValue());
}
});
// Adds the JSlider on the Frame container
getContentPane().add(sdrSlider);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
}
. . .
Hình 2 cho thấy đầu ra của đoạn mã trên.
Hình 2: Output - Xử lý sự kiện trên JSlider
Ví dụ có sử dụng JSlider