Java Swing JToggleButton

由 drbear 创建, 最后一次修改 2017-01-09

Java Swing教程 - Java Swing JToggleButton


JToggleButton是一个双状态按钮。这两个状态被选择和取消选择。

当我们按下切换按钮时,它在被按下和未按下之间切换。

JButton用于启动动作,而JToggleButton用于从可能的选项列表中选择一个选项。

通常,我们使用一组JToggleButtons让用户从互斥选择列表中选择一个选项。

我们可以使用Action对象,字符串标签,图标,以及一个布尔标志,用于指示是否默认选择创建JToggleButton。

创建一个没有标签,没有图像的JToggleButton

JToggleButton tb1  = new JToggleButton(); 

创建JToggleButton,文本为“我的选择"

JToggleButton tb2  = new JToggleButton("My Choice"); 

创建JToggleButton,文本为“我的选择"并默认选择

JToggleButton tb3  = new JToggleButton("My Choice", true); 

要选择/取消选择JToggleButton,可以调用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监听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监听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监听JToggleButton事件。它监听其布防,按下和选定属性的更改。

/*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);
  }
}
以上内容是否对您有帮助:

二维码
建议反馈
二维码