Mục lục
Trong bài viết này chúng ta sẽ cùng nhau tìm hiểu JCheckBox trong Java Swing. Về cơ bản thì JCheckBox là một CheckBox component trong Swing để đại diện cho một ý định nào đó được người dùng chọn hay không chọn.
Khởi tạo JCheckBox
Trong Java Swing, JCheckBox kế thừa từ AbstractButton và JToggleButton, vì thế nó có hầu hết các đặc điểm của 2 class cha này. Chúng ta có một số hàm khởi tạo trong JCheckBox như:
- JCheckBox() – Tạo JCheckBox mặc định không chứa bất kỳ văn bản và icon nào.
- JCheckBox(Icon i) – Tạp JCheckBox với icon được chỉ định.
- JCheckBox(Icon i, boolean selected) – Tạo CheckBox với Icon được chỉ định và giá trị boolean – selected là giá trị mặc định ban đầu xem checkbox này có được chọn hay không.
- JCheckBox(String text, boolean selected) – Tạo CheckBox với văn bản được chỉ định và giá trị boolean – selected là giá trị mặc định ban đầu xem checkbox này có được chọn hay không.
- JCheckBox(String text, Icon) – Tạo JCheckBox với Icon và văn bản được chỉ định.
- JCheckBox(String text, Icon, boolean selected) – Tạo JCheckBox với Icon và văn bản được chỉ định và giá trị boolean – selected là giá trị mặc định ban đầu xem checkbox này có được chọn hay không.
Một số method thường sử dụng trong JCheckBox
Một số hàm xử lý sự kiện:
- addActionListener(ItemListener l): Thêm một ItemListener vào JCheckBox.
- itemStateChanged(ItemEvent e) : Một abstract method, được gọi khi trạng thái của CheckBox thay đổi.
- getItem() :Trả về một đối tượng liên quan đến Item đang được chọn.
- getStateChange() : Trả về trạng thái mới nhất của Checkbox,
- getSource() : Trả về component đã kích hoạt item event.
Một số hàm thông dụng trên JCheckBox:
- setIcon(Icon i) – Chỉ định Icon cho checkbox.
- setText(String text) – Chỉ định văn bản hiển thị trên checkbox.
- setSelected(boolean selected) – Chuyển trạng thái của checkbok thành selected tương ứng nếu TRUE thì checkbox thì ở trạng thái được chọn ngược lại là không chọn.
- getIcon() – Trả về Icon hiện tại của checkbox.
- getText() – Trả về văn bản được hiển thị trên checkbox.
- updateUI() – Cập nhập giao diện của checkbox với các giá trị mới.
- getUI() – Trả về giao diện hiển thị checkbox.
- paramString() – Trả về một biểu diễn chuỗi của JCheckBox này.
- getUIClassID() – Trả về tên của lớp Giao diện hiển thị thành phần này.
- getAccessibleContext() – Lấy AccessibleContext được liên kết với JCheckBox này.
- isBorderPaintedFlat() – Nhận giá trị của thuộc tính borderPaintedFlat
- setBorderPaintedFlat(boolean b) – Đặt thuộc tính borderPaintedFlat.
Ví dụ sử dụng JCheckBox
import javax.swing.*; class simpleCheckbox { public static void main(String[] args) { // Create and set up a frame window JFrame.setDefaultLookAndFeelDecorated(true); JFrame frame = new JFrame("Simple checkbox demo"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Define the panel to hold the checkbox JPanel panel = new JPanel(); // Create checkbox with different constructors JCheckBox checkbox1 = new JCheckBox("Apple", true); JCheckBox checkbox2 = new JCheckBox("Banana"); JCheckBox checkbox3 = new JCheckBox("Grape", true); JCheckBox checkbox4 = new JCheckBox("Orange"); JCheckBox checkbox5 = new JCheckBox("Pear", true); // Set up the title for the panel panel.setBorder(BorderFactory.createTitledBorder("Fruits")); // Add the checkbox into the panels panel.add(checkbox1); panel.add(checkbox2); panel.add(checkbox3); panel.add(checkbox4); panel.add(checkbox5); // Add the panel into the frame frame.add(panel); // Set the window to be visible as the default to be false frame.pack(); frame.setVisible(true); } }
Output
Xử lý sự kiện trong JCheckBox
Xử ký sự kiện trong CheckBox là một phần không thể thiếu, khi người dùng chọn vào các CheckBox tương ứng.
Ví dụ tạo CheckBox khi được chọn sẽ hiển thị ra màn hình “Checkbox được chọn”, khi bỏ chọn sẽ hiển thị ra màn hình “Checkbox bị bỏ chọn”.
import javax.swing.*; import java.awt.*; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; class checkboxWithEvent { public static void main(String[] args) { JFrame frame = new JFrame("Checkbox with event listener"); frame.setSize(500, 300); // Define the panel to hold the checkbox JPanel panel1 = new JPanel(); JPanel panel2 = new JPanel(); JLabel msg = new JLabel("", JLabel.CENTER); // Set up the title for the panel panel1.setBorder(BorderFactory.createTitledBorder("Name")); panel2.setBorder(BorderFactory.createTitledBorder("Output")); JCheckBox jCheckBox = new JCheckBox("JCheckBox"); // Add the checkbox into the panels panel1.add(jCheckBox); panel2.add(msg); // Add action listener jCheckBox.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { if (e.getStateChange() == 1) { msg.setText("CheckBox duoc chon"); } else { msg.setText("Checkbox bi bo chon"); } } }); // Add the panel into the frame frame.setLayout(new GridLayout(2, 2)); frame.getContentPane().add(panel1); frame.getContentPane().add(panel2); frame.setVisible(true); } }
Output
Nhấp vào Checkbox
Cuối cùng bỏ chọn
Cách tạo Mnemonic key cho JCheckBox
Mnemonic key là một phím tắt nhanh dùng để gán cho các JCheckbox thường được sử dụng nhiều.
Ví dụ tạo 4 Checkbox và tạo Mnemonic key cho JCheckBoxA, khi chúng ta nhấn ALT + A thì CheckBox này sẽ được chọn tương tự như hành động nhấp chuột của người dùng. Sử dụng setMnemonic() method để làm được điều như trên:
import javax.swing.*; import java.awt.*; import java.awt.event.KeyEvent; public class Main { public static void main(String[] args) { JCheckBox a = new JCheckBox("A"); a.setSelected(true); a.setMnemonic(KeyEvent.VK_A); JCheckBox b = new JCheckBox("B"); JCheckBox c = new JCheckBox("C"); JCheckBox d = new JCheckBox("D"); JFrame frame = new JFrame(); frame.setLayout(new FlowLayout()); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.add(new JLabel("Car Features")); frame.add(a); frame.add(b); frame.add(c); frame.add(d); frame.pack(); frame.setVisible(true); } }
Tạo tooltip cho JCheckbox
Tooltip là một dạng khi người dùng rê chuột vào JCheckBox thì nó sẽ hiển thị một đoạn văn bản có thể dùng để mô tả một ý gì đó từ nhà phát triển. Chúng ta có thể làm điều này với setToolTipText() method.
import java.awt.BorderLayout; import javax.swing.JCheckBox; import javax.swing.JFrame; public class Main { public static void main(String args[]) { JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JCheckBox checkBox = new JCheckBox("A"); checkBox.setToolTipText("Italic font"); frame.add(checkBox, BorderLayout.NORTH); frame.setSize(300, 100); frame.setVisible(true); } }
Output
Vô hiệu hoá CheckBox
Một số trường hợp bạn cần vô hiệu hoá CheckBox không cho người dùng lựa chọn nó, có thể là giá trị của Checkbox này không có giá trị so với ngữ cảnh hiện tại chẳng hạn. Các bạn có thể sử dụng setEnabled(false) trong trường hợp này.
import java.awt.BorderLayout; import javax.swing.JCheckBox; import javax.swing.JFrame; public class Main { public static void main(String args[]) { JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JCheckBox checkBox = new JCheckBox("A"); checkBox.setEnabled(false); frame.add(checkBox, BorderLayout.NORTH); frame.setSize(300, 100); frame.setVisible(true); } }
Nguồn tham khảo
https://examples.javacodegeeks.com/desktop-java/swing/java-swing-checkbox-example/
http://www.java2s.com/Tutorials/Java/Swing_How_to/JCheckBox/index.htm
https://www.geeksforgeeks.org/java-swing-jcheckbox-examples/