Java Swing单选按钮实战:字体大小控制界面全解析

一、原题完整代码呈现
以下是计算机二级Java考试中关于Swing单选按钮(JRadioButton)的典型题型,主要考察窗口可见性设置、组件实例化、事件方法参数及监听器绑定,包含4处需要填写的空白(标记为//*********Found**********):
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Java_2{
public static void main(String[] args){
RadioButtonFrame frame = new RadioButtonFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//*********Found**********
___________________;
}
}
class RadioButtonFrame extends JFrame{
public RadioButtonFrame(){
setTitle("Radio按钮实例");
setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
Container contentPane = getContentPane();
label = new JLabel("热烈庆祝Java程序语言开考三周年");
label.setForeground(Color.yellow);
contentPane.setBackground(Color.red);
label.setFont(new Font("黑体", Font.PLAIN, DEFAULT_SIZE));
contentPane.add(label, BorderLayout.CENTER);
buttonPanel = new JPanel();
group = new ButtonGroup();
addRadioButton("小", 8);
addRadioButton("中", 12);
addRadioButton("大", 18);
addRadioButton("特大", 30);
contentPane.add(buttonPanel, BorderLayout.SOUTH);
}
public void addRadioButton(String name, final int size){
boolean selected = size == DEFAULT_SIZE;
//*********Found**********
JRadioButton button = new ____________________(name, selected);
group.add(button);
buttonPanel.add(button);
ActionListener listener = new ActionListener(){
//*********Found**********
public void actionPerformed(_____________________ evt){
label.setFont(new Font("黑体", Font.PLAIN, size));
}
};
//*********Found**********
button.addActionListener(__________________);
}
public static final int DEFAULT_WIDTH = 340;
public static final int DEFAULT_HEIGHT = 200;
private JPanel buttonPanel;
private ButtonGroup group;
private JLabel label;
private static final int DEFAULT_SIZE = 12;
}二、空白处逐一解析与解答
1. 第一处空白:设置窗口可见性
答案:frame.setVisible(true)
//*********Found**********
frame.setVisible(true);解析:
Swing窗口(JFrame)默认处于不可见状态,需通过setVisible(true)方法使其显示。main方法中创建RadioButtonFrame实例后,必须调用此方法才能让用户看到窗口,因此填写frame.setVisible(true)。
2. 第二处空白:创建JRadioButton实例的类名
答案:JRadioButton
//*********Found**********
JRadioButton button = new JRadioButton(name, selected);解析: JRadioButton是Swing中单选按钮的组件类,创建实例需使用new关键字+类名+构造参数。此处参数name为按钮显示文本,selected为是否默认选中(size == DEFAULT_SIZE时选中“中”号按钮),因此填写JRadioButton。
3. 第三处空白:actionPerformed方法的参数类型
答案:ActionEvent
//*********Found**********
public void actionPerformed(ActionEvent evt){解析: ActionListener接口要求实现actionPerformed方法,其唯一参数类型为ActionEvent(封装事件相关信息,如事件源、触发时间等)。匿名内部类实现该接口时,参数类型必须匹配,因此填写ActionEvent。
4. 第四处空白:绑定到按钮的监听器对象
答案:listener
//*********Found**********
button.addActionListener(listener);解析: button.addActionListener方法需要传入一个ActionListener实例,用于处理按钮点击事件。前面已创建listener对象(实现了ActionListener接口),因此将其作为参数传入,填写listener。
三、完整正确代码
四、程序功能与运行说明
程序功能
该程序是一个基于Swing的界面应用,通过单选按钮控制标签文本的字体大小,核心功能包括:
- 窗口顶部显示标签“热烈庆祝Java程序语言开考三周年”(黄色文字,红色背景)
- 窗口底部有4个单选按钮(“小”“中”“大”“特大”),分别对应8、12、18、30号字体
- 选中不同单选按钮时,标签文字会实时切换到对应大小(默认选中“中”号12号字体)
- 点击窗口关闭按钮可退出程序
运行说明
- 程序启动:main方法创建
RadioButtonFrame窗口,设置标题为“Radio按钮实例”,大小340×200像素,调用setVisible(true)使其显示 - 初始状态:标签文字为12号黑体(默认选中“中”按钮),黄色文字在红色背景上清晰显示
交互效果:
- 点击“小”按钮:文字变为8号字体
- 点击“中”按钮:文字变回12号字体
- 点击“大”按钮:文字变为18号字体
- 点击“特大”按钮:文字变为30号字体
- 单选特性:
ButtonGroup确保同一时间只有一个按钮被选中(互斥效果)
五、核心知识点总结
Swing窗口基础控制
- 可见性:
setVisible(true)是窗口显示的关键,默认不可见 - 关闭策略:
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)确保点击关闭按钮时程序终止(避免后台运行) - 布局管理:使用
BorderLayout(默认布局),标签放中央(BorderLayout.CENTER),按钮面板放底部(BorderLayout.SOUTH)
- 可见性:
单选按钮(JRadioButton)与按钮组(ButtonGroup)
- 组件创建:
new JRadioButton(name, selected)初始化单选按钮,name为显示文本,selected指定是否默认选中 - 互斥控制:
ButtonGroup group管理多个单选按钮,通过group.add(button)将按钮加入组,确保只有一个按钮可被选中 - 面板组织:按钮面板(
JPanel buttonPanel)用于集中放置单选按钮,使布局更整洁
- 组件创建:
事件监听机制
- 监听器创建:匿名内部类实现
ActionListener接口,重写actionPerformed方法定义按钮点击后的逻辑(修改字体大小) - 事件绑定:
button.addActionListener(listener)将监听器与按钮关联,点击按钮时自动触发actionPerformed方法 - 字体修改:
label.setFont(new Font("黑体", Font.PLAIN, size))通过size参数(8/12/18/30)动态调整字体大小
- 监听器创建:匿名内部类实现
组件样式设置
- 标签样式:
label.setForeground(Color.yellow)设置文字颜色,contentPane.setBackground(Color.red)设置背景色 - 字体定义:
new Font("黑体", Font.PLAIN, size)指定字体名称、样式(普通)和大小 - 尺寸常量:通过
DEFAULT_WIDTH、DEFAULT_HEIGHT、DEFAULT_SIZE定义常量,提高代码可维护性
- 标签样式:
六、常见错误与应试技巧
常见错误分析
- 第一处空白窗口可见性错误:遗漏此语句(窗口不可见,无法交互)或写成
setVisible(true)(缺少对象frame,语法错误) - 第二处空白组件实例化错误:写成
RadioButton(Swing中正确类名是JRadioButton,遗漏前缀J)或拼写错误(如JRadioButon) - 第三处空白事件参数错误:写成
ActionEvent的拼写错误(如ActionEvt)或使用Event(父类,不匹配方法定义) - 第四处空白监听器绑定错误:写成
this(当前对象未实现ActionListener)或new ActionListener()(创建新实例而非使用已定义的listener)
- 第一处空白窗口可见性错误:遗漏此语句(窗口不可见,无法交互)或写成
应试技巧
- 窗口显示:“Swing窗口要可见,setVisible(true)莫忘记,对象.方法要记牢,否则界面看不见”
- 单选按钮创建:“单选按钮JRadioButton,构造参数名和选,new出实例加组里,互斥效果靠ButtonGroup”
- 事件方法参数:“ActionListener接口里,actionPerformed要实现,参数类型ActionEvent, evt变量常使用”
- 监听器绑定:“按钮点击要响应,监听器对象传进去,前面定义listener,直接传入不犹豫”
通过本题,我们掌握了Swing中单选按钮的创建与管理、事件监听绑定、字体动态调整及窗口布局的综合技能。这类题型是“组件交互+界面反馈”模式的典型体现,对理解桌面应用中用户操作与界面响应的逻辑具有重要意义。