Java Swing JToggleButton開關按鈕的實現
阿新 • • 發佈:2020-01-07
1. 概述
官方JavaDocsApi: javax.swing.JToggleButton
JToggleButton,開關按鈕。JToggleButton 是 JRadioButton,JCheckBox 的父類,主要實現一個按鈕的兩種狀態(選中 和 未選中)來實現開關切換的效果。
JToggleButton 常用構造方法:
// 無文字,預設未選中 JToggleButton() // 有文字,預設未選中 JToggleButton(String text) // 有文字,並指定是否選中 JToggleButton(String text,boolean selected)
JToggleButton 常用方法:
// 設定開關按鈕的 文字、字型 和 字型顏色 void setText(String text) void setFont(Font font) void setForeground(Color fg) /* 以下方法定義在 javax.swing.AbstractButton 基類中 */ // 設定開關按鈕是否選中狀態 void setSelected(boolean b) // 判斷開關按鈕是否選中 boolean isSelected() // 設定開關按鈕是否可用 void setEnabled(boolean enable) // 設定開關按鈕在 預設(關)、被選中(開)、不可用 時顯示的圖片 void setIcon(Icon defaultIcon) void setPressedIcon(Icon pressedIcon) void setDisabledIcon(Icon disabledIcon) // 設定圖片和文字之間的間距 void setIconTextGap(int iconTextGap)
JToggleButton 常用監聽器:
// 新增狀態改變監聽器 void addChangeListener(ChangeListener l)
2. 程式碼例項: 預設的開關按鈕
package com.xiets.swing; import javax.swing.*; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; public class Main { public static void main(String[] args) { JFrame jf = new JFrame("測試視窗"); jf.setSize(250,250); jf.setLocationRelativeTo(null); jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); JPanel panel = new JPanel(); // 建立開關按鈕 JToggleButton toggleBtn = new JToggleButton("開關按鈕"); // 新增 toggleBtn 的狀態被改變的監聽 toggleBtn.addChangeListener(new ChangeListener() { @Override public void stateChanged(ChangeEvent e) { // 獲取事件源(即開關按鈕本身) JToggleButton toggleBtn = (JToggleButton) e.getSource(); System.out.println(toggleBtn.getText() + " 是否選中: " + toggleBtn.isSelected()); } }); panel.add(toggleBtn); jf.setContentPane(panel); jf.setVisible(true); } }
結果展示:
執行程式碼,點選開關按鈕,檢視控制檯輸出。
3. 程式碼例項: 自定義圖片開關
使用下面兩個圖片分別代表開關按鈕的 選中(開) 和 未選中(關) 狀態,分別命名為: toggle_on.png,toggle_off.png:
package com.xiets.swing; import javax.swing.*; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; public class Main { public static void main(String[] args) { JFrame jf = new JFrame("測試視窗"); jf.setSize(250,250); jf.setLocationRelativeTo(null); jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); JPanel panel = new JPanel(); // 建立開關按鈕 JToggleButton toggleBtn = new JToggleButton(); // 首先設定不繪製按鈕邊框 toggleBtn.setBorderPainted(false); // 設定 選中(開) 和 未選中(關) 時顯示的圖片 toggleBtn.setSelectedIcon(new ImageIcon("toggle_on.png")); toggleBtn.setIcon(new ImageIcon("toggle_off.png")); // 新增 toggleBtn 的狀態被改變的監聽 toggleBtn.addChangeListener(new ChangeListener() { @Override public void stateChanged(ChangeEvent e) { // 獲取事件源(即開關按鈕本身) JToggleButton toggleBtn = (JToggleButton) e.getSource(); System.out.println(toggleBtn.getText() + " 是否選中: " + toggleBtn.isSelected()); } }); panel.add(toggleBtn); jf.setContentPane(panel); jf.setVisible(true); } }
執行程式碼,點選開關按鈕,檢視控制檯輸出。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。