Mục lục
JToogleButton thật chất là một Button với 2 trạng thái chọn và bỏ chọn, khi chúng ta nhấp vào một JToggleButton nó sẽ luân chuyển trạng thái qua lại giữa chọn và bỏ chọn.
Thông thường chúng ta sử dụng JToggleButton để cho phép người dùng chọn hay không chọn các chức năng mà ứng dụng cho phép.
Khởi tạo JToggleButton
Chúng ta có một số constructor sau để khởi tạo JToggleButton như sau:
- JToggleButton() – Khởi tạo JToggleButton rỗng không chứa Label, Image.
- JToggleButton(String) – Khởi tạo JToggleButton với Label được chỉ định.
- JToggleButton(String, Boolean) – Khởi tạo JToggleButton với Label và giá trị Boolean chỉ định được chọn hay bỏ chọn.
Xử lý sự kiện trong JToggleButton
Trong JToggleButton có một số sự kiện như sau:
Action Listener
Đây là sự kiện lắng nghe và kích hoạt mỗi khi người dùng thao tác trên JToggleButton. Ví dụ sau sẽ tạo ra một JToggleButton và xử lý mỗi khi người dùng nhấp vào nó thì sẽ xuất ra tình trạng hiện tại là được chọn hay không được chọn ra màn hình console.
import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.AbstractButton; import javax.swing.JFrame; import javax.swing.JToggleButton; public class Main { public static void main(String args[]) { JFrame frame = new JFrame("Selecting Toggle"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JToggleButton toggleButton = new JToggleButton("Toggle Button"); // Define ActionListener ActionListener actionListener = new ActionListener() { public void actionPerformed(ActionEvent actionEvent) { AbstractButton abstractButton = (AbstractButton) actionEvent.getSource(); boolean selected = abstractButton.getModel().isSelected(); System.out.println("Action - selected=" + selected + "\n"); } }; // Attach Listeners toggleButton.addActionListener(actionListener); frame.add(toggleButton, BorderLayout.NORTH); frame.setSize(300, 125); frame.setVisible(true); } }
Output
Khi được chọn màu sẽ Jtoggle sẽ được đổi
Item Listener
Tương tự như ví dụ trên nhưng chúng ta sẽ sử dụng ItemListener.
import java.awt.BorderLayout; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import javax.swing.JFrame; import javax.swing.JToggleButton; public class Main { public static void main(String args[]) { JFrame frame = new JFrame("Selecting Toggle"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JToggleButton toggleButton = new JToggleButton("Toggle Button"); ItemListener itemListener = new ItemListener() { public void itemStateChanged(ItemEvent itemEvent) { int state = itemEvent.getStateChange(); if (state == ItemEvent.SELECTED) { System.out.println("Selected"); } else { System.out.println("Deselected"); } } }; // Attach Listeners toggleButton.addItemListener(itemListener); frame.add(toggleButton, BorderLayout.NORTH); frame.setSize(300, 125); frame.setVisible(true); } }
Change Listener
ChangeListener sẽ lắng nghe mỗi khi trạng thái của JtoggleButton thay đổi
import java.awt.BorderLayout; import javax.swing.AbstractButton; import javax.swing.ButtonModel; import javax.swing.JFrame; import javax.swing.JToggleButton; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; public class Main { public static void main(String args[]) { JFrame frame = new JFrame("Selecting Toggle"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JToggleButton toggleButton = new JToggleButton("Toggle Button"); ChangeListener changeListener = new ChangeListener() { public void stateChanged(ChangeEvent changeEvent) { AbstractButton abstractButton = (AbstractButton) changeEvent.getSource(); ButtonModel buttonModel = abstractButton.getModel(); boolean armed = buttonModel.isArmed(); boolean pressed = buttonModel.isPressed(); boolean selected = buttonModel.isSelected(); System.out.println("Changed: " + armed + "/" + pressed + "/" + selected); } }; // Attach Listeners toggleButton.addChangeListener(changeListener); frame.add(toggleButton, BorderLayout.NORTH); frame.setSize(300, 125); frame.setVisible(true); } }
Nguồn tham khảo
http://www.java2s.com/Tutorials/Java/Java_Swing/0880__Java_Swing_JToggleButton.htm