Java 整数二进制位显示工具实战解析:Swing交互与位运算应用
一、原题完整代码呈现
以下是计算机二级Java考试中关于Swing事件处理、位运算及窗口关闭的典型题型,主要考察事件监听方法实现、组件交互、容器添加及窗口事件参数,包含4处需要填写的空白(标记为//*********Found********
):
//打印无符号整数位
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Java_3 extends JFrame {
public Java_3(){
super( "打印无符号整数位" );
Container c = getContentPane();
c.setLayout( new FlowLayout() );
c.add( new JLabel( "请输入整数: " ) );
final JTextField output = new JTextField( 33 );
JTextField input = new JTextField( 10 );
input.addActionListener(
new ActionListener() {
//*********Found********
public void _________________( ActionEvent e ){
int val = Integer.parseInt(
e.getActionCommand() );
//*********Found********
_________________.setText( getBits( val ) );
}
}
);
c.add( input );
c.add( new JLabel( "该数的二进制位表示是" ) );
output.setEditable( false );
//*********Found********
c.add( _________________ );
setSize( 720, 70 );
setVisible(true);
}
private String getBits( int value ){
int displayMask = 1 << 31;
StringBuffer buf = new StringBuffer( 35 );
for ( int c = 1; c <= 32; c++ ) {
buf.append(
( value & displayMask ) == 0 ? '0' : '1' );
value <<= 1;
if ( c % 8 == 0 )
buf.append( ' ' );
}
return buf.toString();
}
public static void main( String args[] ){
Java_3 app = new Java_3();
app.addWindowListener(
new WindowAdapter() {
//*********Found********
public void windowClosing( ___________ e ){
System.exit( 0 );
}
}
);
}
}
二、空白处逐一解析与解答
1. 第一处空白:实现ActionListener接口的核心方法
答案:actionPerformed
//*********Found********
public void actionPerformed( ActionEvent e ){
解析: ActionListener
接口仅包含一个抽象方法actionPerformed(ActionEvent e)
,用于处理组件的动作事件(如文本框输入回车)。此处需要重写该方法以实现输入处理逻辑,因此填写actionPerformed
。
2. 第二处空白:将二进制结果设置到输出文本框
答案:output
//*********Found********
output.setText( getBits( val ) );
解析: output
是声明为final
的JTextField
对象,用于显示整数的二进制表示。getBits(val)
方法返回处理后的二进制字符串,通过output.setText(...)
将结果显示在文本框中,因此填写output
。
3. 第三处空白:将输出文本框添加到容器
答案:output
//*********Found********
c.add( output );
解析:
容器c
(ContentPane
)需要添加所有界面组件才能显示。前面已创建output
文本框但未添加到容器,此处通过c.add(output)
将其加入容器,使其在界面中显示,因此填写output
。
4. 第四处空白:窗口关闭事件的参数类型
答案:WindowEvent
//*********Found********
public void windowClosing( WindowEvent e ){
解析: WindowAdapter
中的windowClosing
方法用于处理窗口关闭事件,其参数类型为WindowEvent
(表示窗口事件对象)。该参数包含事件相关信息,因此填写WindowEvent
。
三、完整正确代码
四、程序功能与运行说明
程序功能
该程序实现一个整数到32位二进制的转换与显示工具,核心功能包括:
- 提供图形界面:包含输入文本框(接收整数)、提示标签和输出文本框(显示二进制)
- 交互处理:在输入框中输入整数并按回车后,自动转换为32位二进制字符串
- 格式优化:二进制字符串每8位用空格分隔,便于阅读
- 窗口控制:点击窗口关闭按钮时,程序正常退出
运行说明
程序启动后,显示标题为“打印无符号整数位”的窗口,包含:
- 左侧:“请输入整数: ”标签 + 输入文本框(10列宽)
- 中间:“该数的二进制位表示是”标签
- 右侧:输出文本框(33列宽,不可编辑)
操作流程:
- 在输入框中输入任意整数(如
10
或-5
) - 按下回车键,输出框会显示该整数的32位二进制表示(带空格分隔)
- 在输入框中输入任意整数(如
示例输出:
- 输入
10
,输出:00000000 00000000 00000000 00001010
- 输入
-1
,输出:11111111 11111111 11111111 11111111
(补码表示)
- 输入
- 退出方式:点击窗口右上角关闭按钮,程序终止。
五、核心知识点总结
Swing界面组件与布局
- 核心容器:
JFrame
作为顶层窗口,getContentPane()
获取内容面板用于添加组件 - 布局管理器:
FlowLayout
(默认)使组件按顺序排列,适合简单界面 组件类型:
JLabel
:显示静态文本(如提示信息)JTextField
:输入/输出文本框,setEditable(false)
设置为只读(输出框)
- 核心容器:
事件监听机制
- 动作事件:
input.addActionListener(...)
为输入框绑定动作监听器,响应回车事件 事件处理:
actionPerformed(ActionEvent e)
方法中:e.getActionCommand()
获取输入框文本Integer.parseInt(...)
将文本转换为整数- 调用
getBits(val)
转换为二进制字符串,通过output.setText(...)
显示
- 动作事件:
位运算与二进制转换
- 掩码(
displayMask
):1 << 31
创建最高位为1、其余位为0的32位掩码(0x80000000
) - 位与运算(
value & displayMask
):判断当前最高位是0还是1 - 左移运算(
value <<= 1
):将下一位移动到最高位,便于循环判断 - 格式处理:
StringBuffer
拼接二进制字符,每8位添加空格(c % 8 == 0
)
- 掩码(
窗口事件处理
WindowAdapter
:窗口事件适配器类,简化接口实现(仅需重写windowClosing
)- 关闭逻辑:
windowClosing(WindowEvent e)
中调用System.exit(0)
,确保窗口关闭时程序终止
六、常见错误与应试技巧
常见错误分析
- 第一处空白方法名错误:写成
actionPerform
(拼写错误)或actionListener
(接口名而非方法名),导致事件无法处理 - 第二处空白组件名错误:写成
input
(输入框,覆盖输入内容)或其他变量名(未定义,编译错误) - 第三处空白添加组件错误:写成
input
(重复添加输入框)或遗漏(输出框不显示) - 第四处空白参数类型错误:写成
ActionEvent
(动作事件,与窗口事件不匹配)或Event
(父类,不推荐)
- 第一处空白方法名错误:写成
应试技巧
- 事件监听口诀:"ActionListener重写actionPerformed,事件源调用addActionListener绑定"
- 位运算转换:"掩码定位最高位,位与判断0或1,左移循环查下位,8位一隔更清晰"
- 窗口关闭:"WindowAdapter重写windowClosing,参数类型WindowEvent,退出调用System.exit(0)"
- 组件交互:"输入用input,输出用output,setText传结果,add进容器才显示"
通过本题,我们掌握了Swing组件的交互逻辑、动作事件的处理方法、位运算实现二进制转换的技巧及窗口关闭事件的处理。这类工具将数值与二进制表示直观关联,有助于理解计算机底层数据存储方式,对位运算和界面交互的结合应用具有重要参考价值。