JToggleButton是一個雙狀態(tài)按鈕。這兩個狀態(tài)被選擇和取消選擇。
當我們按下切換按鈕時,它在被按下和未按下之間切換。
JButton用于啟動動作,而JToggleButton用于從可能的選項列表中選擇一個選項。
通常,我們使用一組JToggleButtons讓用戶從互斥選擇列表中選擇一個選項。
我們可以使用Action對象,字符串標簽,圖標,以及一個布爾標志,用于指示是否默認選擇創(chuàng)建JToggleButton。
創(chuàng)建一個沒有標簽,沒有圖像的JToggleButton
JToggleButton tb1 = new JToggleButton();
創(chuàng)建JToggleButton,文本為“我的選擇"
JToggleButton tb2 = new JToggleButton("My Choice");
創(chuàng)建JToggleButton,文本為“我的選擇"并默認選擇
JToggleButton tb3 = new JToggleButton("My Choice", true);
要選擇/取消選擇JToggleButton,可以調(diào)用setSelected()方法。
要檢查是否被選中,請使用它們的isSelected()方法。
以下代碼顯示如何使用這些方法:
tb3.setSelected(true); // Select tb3 boolean b1 = tb3.isSelected(); // will store true in b1 tb3.setSelected(false); // Unselect tb3 boolean b2 = tb3.isSelected(); // will store false in b2
如果選擇是互斥的,我們必須在按鈕組中分組所有選擇。ButtonGroup類的一個實例表示一個按鈕組。
我們可以通過分別使用add()和remove()方法向按鈕組添加和刪除JToggleButton。
最初,按鈕組的所有成員都未選中。
要形成一個按鈕組,我們需要將所有互斥選擇組件添加到ButtonGroup類的一個對象。 我們不會向容器添加ButtonGroup對象。
我們必須向容器中添加所有選擇的組件。
下面的代碼顯示了如何使用ActionListener監(jiān)聽JToggleButton事件。
import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; /*from ww w . j a v a2s . c o m*/ 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); } }
下面的代碼顯示了如何使用ItemListener監(jiān)聽JToggleButton事件。
import java.awt.BorderLayout; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; // ww w. j a va 2 s. c om 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); } }
下面的代碼顯示了如何使用ChangeListener監(jiān)聽JToggleButton事件。它監(jiān)聽其布防,按下和選定屬性的更改。
/*from w ww . j a va 2 s.c om*/ 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); } }
更多建議: