Java-GUI-Example13、Example14
在Swing中常见的按钮组件有JButton、JCheckBox、JRadioButton等,它们都是抽象类AbstractButton类的直接或间接子类。
方法声明 | 功能描述 |
Icon getIcon() | 获取按钮的图标 |
void setIcon(Icon icon) | 设置按钮的图标 |
String getText() | 获取按钮的文本 |
void setText(String text) | 设置按钮的文本 |
void setEnable(boolean b) | 设置按钮是否可用 |
boolean setSelected(boolean b) | 设置按钮是否为选中状态 |
boolean isSelected() | 返回按钮的状态(true为选中,反之为未选中) |
- JCheckBox
JCheckBox组件被称为复选框组件,它有选中和未选中两种状态,通常复选框会有多个,用户可以选择其中一个或者多个。
方法声明 | 功能描述 |
JCheckBox() | 创建一个没有文本信息,初始状态未被选中的复选框 |
JCheckBox(String text) | 创建一个带有文本信息,初始状态违背选定的复选框 |
JCheckBox(String text,boolean selected) | 创建一个带有文本信息,并指定初始状态(选中/未选中)的复选框 |
Example13.java
1 package GUI; 2 import java.awt.*; 3 import java.awt.event.*; 4 import javax.swing.*; 5 public class Example13 { 6 private static void createAndShowGUI() { 7 //1.创建一个JFrame容器窗口 8 JFrame f=new JFrame("JFrame窗口"); 9 f.setLayout(new BorderLayout()); 10 f.setSize(300,300); 11 f.setLocation(300,200); 12 f.setVisible(true); 13 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 14 //2.创建一个JLabel标签组件,标签文本居中对齐 15 JLabel label=new JLabel("Hello World!",JLabel.CENTER); 16 label.setFont(new Font("宋体",Font.PLAIN,20)); 17 //3.创建一个JPanel面板组件 18 JPanel panel=new JPanel(); 19 //3.1创建两个JCheckBox复选框,并添加到JPanel组件中 20 JCheckBox italic=new JCheckBox("ITALIC"); 21 JCheckBox bold =new JCheckBox("BOLD"); 22 //3.2为复选框定义ActionListener监听器 23 ActionListener listener =new ActionListener() { 24 public void actionPerformed(ActionEvent e) { 25 int mode =0; 26 if (bold.isSelected()) 27 mode+=Font.BOLD; 28 if (italic.isSelected()) 29 mode+=Font.ITALIC; 30 label.setFont(new Font("宋体",mode,20)); 31 } 32 }; 33 //3.3为两个复选框添加监听器 34 italic.addActionListener(listener); 35 bold.addActionListener(listener); 36 //3.4在JPanel面板添加复选框 37 panel.add(italic); 38 panel.add(bold); 39 //4.向JFrame窗口容器中加入居中的JLabel标签组件和页尾的JPanel面板组件 40 f.add(label); 41 f.add(panel,BorderLayout.PAGE_END); 42 } 43 public static void main(String[] args) { 44 //使用SwingUtilities工具类调用createAndShowGUI()方法并显示GUI程序 45 SwingUtilities.invokeLater(Example13::createAndShowGUI); 46 } 47 }
效果:
- JRadionButton
JRadioButton组件被称为单选按钮组件,与JCheckBox复选框不同的是,单选按钮只能选中一个,就像收音机上的电台控制按钮,当按下一个,先前按下的按钮就会自动弹起。
实现JRadioButton按钮之间的互斥,需要javax.swing,ButtonGroup类。ButtonGroup是一个不可见的组件,不需要将其增加到容器中显示,只是在逻辑上表示一个单选按钮组。
方法声明 | 功能描述 |
JRadioButton() | 创建一个没有文本信息,初始状态未被选中的单选框 |
JRadioButton(String text) | 创建一个带有文本信息,初始状态未被选中的单选框 |
JRadioButton(String text,boolean selected) | 创建一个具有文本信息,并指定初始状态(选中/未选中)的单选框 |
Example14.java
1 package GUI; 2 import java.awt.*; 3 import java.awt.event.*; 4 import javax.swing.*; 5 public class Example14 { 6 private static void createAndShowGUI() { 7 //1.创建一个JFrame容器窗口 8 JFrame f =new JFrame("JFrame窗口"); 9 f.setLayout(new BorderLayout()); 10 f.setSize(300,200); 11 f.setLocation(300,200); 12 f.setVisible(true); 13 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 14 //2.创建一个页尾的JPanel面板组件,标签文本居中对齐 15 JLabel label =new JLabel("Hello World!",JLabel.CENTER); 16 label.setFont(new Font("宋体",Font.PLAIN,20)); 17 //3.创建一个页尾的JPanel面板组件,来封装ButtonGroup组件 18 JPanel panel =new JPanel(); 19 //3.1创建一个ButtonGroup按钮组件 20 ButtonGroup group =new ButtonGroup(); 21 //3.2创建两个JRadioButton单选按钮组件 22 JRadioButton italic =new JRadioButton("ITALIC"); 23 JRadioButton bold =new JRadioButton("BOLD"); 24 //3.3将两个JRadioButton单选组件加入到同一个ButtonGroup组中 25 group.add(italic); 26 group.add(bold); 27 //3.4为两个JRadioButton单选按钮组件注册动作监听器 28 ActionListener listener =new ActionListener() { 29 public void actionPerformed(ActionEvent e) { 30 int mode =0; 31 if(bold.isSelected()) 32 mode+=Font.BOLD; 33 if(italic.isSelected()) 34 mode+=Font.ITALIC; 35 label.setFont(new Font("宋体",mode,20)); 36 } 37 }; 38 //3.5为两个复选框添加监听器 39 italic.addActionListener(listener); 40 bold.addActionListener(listener); 41 //3.6将两个JRadioButton单选按钮组件加入到页尾的JPanel组件中 42 panel.add(italic); 43 panel.add(bold); 44 //4.向JFrame容器中分别加入居中的JLabel标签组件和页尾的JPanel面板组件 45 f.add(label); 46 f.add(panel,BorderLayout.PAGE_END); 47 } 48 public static void main(String[] args) { 49 //使用SwingUtilities工具类调用createAndShowGUI()方法显示GUI程序 50 SwingUtilities.invokeLater(Example14::createAndShowGUI); 51 } 52 }
效果: