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中单选按钮的创建与管理、事件监听绑定、字体动态调整及窗口布局的综合技能。这类题型是“组件交互+界面反馈”模式的典型体现,对理解桌面应用中用户操作与界面响应的逻辑具有重要意义。