Java Swing JToggleButton

2018-01-09 19:23 更新

Java Swing教程 - Java Swing JToggleButton


JToggleButton是一個(gè)雙狀態(tài)按鈕。這兩個(gè)狀態(tài)被選擇和取消選擇。

當(dāng)我們按下切換按鈕時(shí),它在被按下和未按下之間切換。

JButton用于啟動(dòng)動(dòng)作,而JToggleButton用于從可能的選項(xiàng)列表中選擇一個(gè)選項(xiàng)。

通常,我們使用一組JToggleButtons讓用戶從互斥選擇列表中選擇一個(gè)選項(xiàng)。

我們可以使用Action對(duì)象,字符串標(biāo)簽,圖標(biāo),以及一個(gè)布爾標(biāo)志,用于指示是否默認(rèn)選擇創(chuàng)建JToggleButton。

創(chuàng)建一個(gè)沒有標(biāo)簽,沒有圖像的JToggleButton

JToggleButton tb1  = new JToggleButton(); 

創(chuàng)建JToggleButton,文本為“我的選擇"

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

創(chuàng)建JToggleButton,文本為“我的選擇"并默認(rèn)選擇

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

要選擇/取消選擇JToggleButton,可以調(diào)用setSelected()方法。

要檢查是否被選中,請(qǐng)使用它們的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類的一個(gè)實(shí)例表示一個(gè)按鈕組。

我們可以通過分別使用add()和remove()方法向按鈕組添加和刪除JToggleButton。

最初,按鈕組的所有成員都未選中。

要形成一個(gè)按鈕組,我們需要將所有互斥選擇組件添加到ButtonGroup類的一個(gè)對(duì)象。 我們不會(huì)向容器添加ButtonGroup對(duì)象。

我們必須向容器中添加所有選擇的組件。



動(dòng)作偵聽器

下面的代碼顯示了如何使用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);
  }
}


項(xiàng)目偵聽器

下面的代碼顯示了如何使用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);
  }
}
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)