在本实验中,学生苏振能使用Java编程语言实现了两个主要功能:一个简单的计算器和一个人民币与美元的转换器。这两个应用都是基于Java Swing库构建的,Swing库提供了丰富的组件和事件处理机制来创建图形用户界面(GUI)。
计算器的设计遵循了Windows平台的calc.exe计算器的基本操作。它包括了基本的加、减、乘、除运算,以及清除、小数点和等于等按键。在Java中,这些功能通过监听键盘事件和按钮点击事件来实现。键盘事件的处理是通过实现KeyListener接口完成的,例如`public void keyPressed(KeyEvent e)`方法。当用户按下键盘上的数字或运算符键时,相应的事件会被触发,进而更新计算器的状态和显示结果。
计算器的界面布局使用了BorderLayout,将显示结果的部分设置在北区(North),而数字和运算符按钮则放在中心区(Center)。此外,还使用了GridLayout来组织按钮,使得它们在界面上均匀分布。每个按钮都有一个对应的ActionListener,当按钮被点击时,对应的事件处理器(如InsertAction和CommandAction)会执行相应的计算逻辑。
货币转换程序的设计要求用户输入人民币值和当前汇率,然后计算出相应的美元值。这个程序同样包含了一个编辑框来显示输入和结果,可能还需要一个额外的按钮来触发转换操作。用户界面的构建和事件处理与计算器类似,但涉及的计算逻辑更为简单,主要是根据输入的汇率进行乘法运算。
实验过程中,苏振能可能面临了如何正确处理键盘事件和如何合理布局组件的挑战。为了解决这些问题,他采用了Java Swing提供的键盘监听API和布局管理器,如GridLayout和BorderLayout,有效地实现了组件的交互和布局。
通过这次实验,苏振能深刻理解了Java Swing组件的使用、事件处理模型(如委托事件模型)以及布局管理。他认识到在设计GUI时,应该有一个清晰的视觉模型,并且数据模型、可视化表示和用户交互之间需要有明确的划分。控制器负责处理用户操作,根据用户的输入更新模型,再由模型驱动视图的更新。
程序源代码中,CalculatorFrame和CalculatorPanel分别代表计算器主窗口和计算面板。CalculatorPanel继承自Panel,并覆盖了构造函数以设置布局和添加组件。添加按钮的过程展示了如何为每个按钮指定事件监听器,从而实现按钮的功能。
这个实验不仅锻炼了编程技能,也提升了对GUI编程的理解,特别是Java Swing在构建桌面应用中的应用。通过这样的实践,开发者可以更熟练地创建具有用户友好界面的应用程序,并能够处理用户输入和交互。