Java Swing余弦计算器程序解析
题目代码分析
以下是需要补全的Java Swing代码,功能是创建一个余弦计算器,支持弧度和角度两种单位:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Java_3 extends JFrame implements ActionListener{
private double x=0;
private double y=0;
JTextField xval = new JTextField(10);
JButton calcBtn = new JButton("计算");
JTextArea result = new JTextArea(10,20);
boolean isAngleRad=true;
JButton angleUnitBtn=new JButton("设成角度");
void initFrame(){
Container content = getContentPane();
content.setLayout(new BorderLayout());
JPanel calcPanel = new JPanel();
calcPanel.setLayout(new FlowLayout());
//***************************Found*********************
calcPanel.add( _______________________ );
calcPanel.add(xval);
calcPanel.add(calcBtn) ;
calcPanel.add(angleUnitBtn);
content.add(calcPanel,"North");
calcBtn.addActionListener(this);
//***************************Found*********************
angleUnitBtn._______________________ ;
content.add(result,"Center");
//***************************Found*********************
result._______________________;
}
public Java_3(){
super("计算余弦函数");
setSize(500,200);
initFrame();
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e){
if (e.getSource()== calcBtn){
String str;
if(isAngleRad) {
x=Double.parseDouble(xval.getText());
str="cos("+x+")=";
}else {
x=Double.parseDouble(xval.getText())/180*3.1415926;
//***************************Found*********************
str="cos("+ _______________________ +"*3.14159/180)=";
};
y=Math.cos(x);
result.append(str+y+'\n');
}else if(e.getSource()== angleUnitBtn){
if(isAngleRad)
angleUnitBtn.setText("设成弧度");
else
//***************************Found*********************
angleUnitBtn.setText( _____________________ );
//***************************Found*********************
isAngleRad= __________________ ;
}
}
public static void main(String[] args){
new Java_3();
}
}
空白处解析
第一个空白处:
calcPanel.add( _______________________ );
- 解析:需要添加一个标签说明输入框的用途
- 答案:
new JLabel("输入值:")
第二个空白处:
angleUnitBtn._______________________ ;
- 解析:为角度单位按钮添加事件监听器
- 答案:
addActionListener(this)
第三个空白处:
result._______________________;
- 解析:文本区域通常需要设置为可滚动或不可编辑
- 答案:
setEditable(false)
(设置为不可编辑,只用于显示结果)
第四个空白处:
str="cos("+ _______________________ +"*3.14159/180)=";
- 解析:需要显示用户输入的原始角度值
- 答案:
xval.getText()
第五个空白处:
angleUnitBtn.setText( _____________________ );
- 解析:切换按钮文本,当从弧度切换回角度时显示"设成角度"
- 答案:
"设成角度"
第六个空白处:
isAngleRad= __________________ ;
- 解析:切换角度单位状态,取当前值的相反值
- 答案:
!isAngleRad
完整正确代码
Java Swing实现余弦计算器:从弧度到角度的转换
在科学计算中,余弦函数是一个常用的数学函数,它可以接受弧度或角度作为输入。本文将介绍如何使用Java Swing创建一个可视化的余弦计算器,支持弧度和角度两种单位的切换,并展示计算结果。
1. 程序功能概述
这个余弦计算器具有以下功能:
- 提供输入框让用户输入数值
- 支持弧度和角度两种计算单位,并可相互切换
- 计算并显示余弦值结果
- 保留历史计算记录
程序界面简洁直观,上部为输入和控制区域,下部为结果显示区域。
2. 界面设计与布局
程序使用了Swing的布局管理器来组织界面元素:
- 整体布局:使用
BorderLayout
将界面分为北部(输入区域)和中部(结果区域) 输入区域:
- 使用
FlowLayout
布局的JPanel
- 包含一个提示标签、一个输入文本框、一个计算按钮和一个单位切换按钮
- 使用
结果区域:
- 使用
JTextArea
组件显示计算结果 - 设置为不可编辑,只用于展示历史计算记录
- 使用
关键代码实现:
Container content = getContentPane();
content.setLayout(new BorderLayout());
JPanel calcPanel = new JPanel();
calcPanel.setLayout(new FlowLayout());
// 添加各种组件到面板
content.add(calcPanel,"North");
content.add(result,"Center");
3. 事件处理机制
程序实现了ActionListener
接口来处理用户交互:
计算按钮事件:
- 获取用户输入的数值
- 根据当前单位(弧度/角度)进行计算
- 将结果追加到文本区域
单位切换按钮事件:
- 切换单位状态(弧度↔角度)
- 更新按钮显示文本
事件处理的核心代码:
public void actionPerformed(ActionEvent e) {
if (e.getSource() == calcBtn) {
// 处理计算逻辑
} else if (e.getSource() == angleUnitBtn) {
// 处理单位切换逻辑
}
}
4. 核心计算逻辑
程序的核心是余弦值的计算,需要处理两种单位:
弧度计算:
- 直接使用
Math.cos()
方法计算 Math.cos()
方法本身接受弧度作为参数
- 直接使用
角度计算:
- 先将角度转换为弧度:
弧度 = 角度 × π / 180
- 再使用
Math.cos()
方法计算
- 先将角度转换为弧度:
代码实现:
if (isAngleRad) { // 弧度计算
x = Double.parseDouble(xval.getText());
str = "cos(" + x + ")=";
} else { // 角度计算
x = Double.parseDouble(xval.getText()) / 180 * 3.1415926;
str = "cos(" + xval.getText() + "*3.14159/180)=";
}
y = Math.cos(x);
result.append(str + y + '\n');
5. 单位切换功能
单位切换是通过一个布尔变量isAngleRad
实现的:
isAngleRad = true
:表示当前使用弧度isAngleRad = false
:表示当前使用角度
切换逻辑:
if (isAngleRad)
angleUnitBtn.setText("设成弧度");
else
angleUnitBtn.setText("设成角度");
isAngleRad = !isAngleRad; // 取反值切换状态
6. 程序改进建议
这个基础计算器可以从以下几个方面进行改进:
- 输入验证:添加输入验证,处理非数字输入的情况
- 精度控制:允许用户设置计算结果的小数位数
- 清除功能:添加清除按钮,可清除输入框和结果区域
- 科学计数法:支持大数值的科学计数法显示
- 更多函数:扩展支持正弦、正切等更多三角函数
通过这个实例,我们学习了Swing界面设计、事件处理、数学计算和状态管理等知识。这个程序虽然简单,但展示了GUI应用程序的基本架构和开发思路,对于理解Java桌面应用开发具有重要意义。