NJUPT JAVA语言 综合图形界面程序设计

本文介绍了一个使用Java Swing实现的简单货币转换器程序。该程序能够将人民币金额转换为美元,并展示了如何使用Swing组件如JFrame、JPanel、JLabel、JTextField和JButton来构建GUI界面。此外,还分享了在开发过程中遇到的问题及解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、 实验目的和要求

学习和理解JAVA SWING中的容器,部件,布局管理器和部件事件处理方法。

通过编写和调试程序,掌握JAVA图形界面程序设计的基本方法。

实验内容:

    设计和编写一个用于将人民币转换为等值的美元的程序,界面要求可以输入人民币的金额并可以得到转换后的结果。

附:程序使用的人民币外汇牌价参考

每100元美元等值买入人民币数:619.72 (2015/5/23 数据)


二、实验代码

package think;

import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class java_exp_01rmb {

	
	public static void main(String[] args) {
		JFrame frame = new JFrame("人民币转换成美元");
		frame.setResizable(false);//固定大小
		
		JPanel panel = new JPanel();
		panel.setBackground(new Color(250,250,250));
		panel.setLayout(new GridLayout(5,1,10,10));
		
		
		JLabel text1 = new JLabel("人民币:");
		JLabel text2 = new JLabel("美元:");
		JTextField rmbInput = new JTextField("");
		JTextField dollarOutput = new JTextField("");
		JButton bt = new JButton("转换");
		
		
		frame.setBounds(300, 300, 210, 250);
		panel.setBounds(0, 0, 200, 200);
		
		panel.add(text1);
		panel.add(rmbInput);
		panel.add(text2);
		panel.add(dollarOutput);
		panel.add(bt);
		
		frame.add(panel);
		frame.setVisible(true);
		
		bt.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				double temp;
				JButton bt = (JButton) e.getSource();
				 try{
					 temp = Double.parseDouble(rmbInput.getText());
					 dollarOutput.setText(""+temp/6.1972);
				 } catch(NumberFormatException n)
				 {
				    	dollarOutput.setText("你输入的金额错误!");
				 }
				
			}
		});
	}

}




三、界面

    


四、小结

整体的思路:

 * 布局——设置一个swing顶层容器,再设置一个通用容器jpanel,采用gridlayout布局。布局里用五个组件,jpaneljtextfield和一个jbutton。之后再采用一个监听器监听一下button按钮。

遇到的问题和解决的方法:

 * 一开始没有设置布局为GridLayout,直接用label默认的布局。虽然设置了setbounds但是不能按照理想的位置输出。后来百度看例子+看书,采用了GridLayout布局。耗时大概一小时10分钟。

 * 在获取textfield的组件里的输入内容的时候,由于gettext的返回值是string,所以需要转换成double,之前没有做过这方面的内容,所以百度了一下看了例子。

 *  settext中输出的形式需要注意,不可以直接给一个double类型的数据,但是可以连接在字符串之后输出。

 * 优化了程序:对输入类型进行了控制,如果输入的不是数字会有异常输出。




针对南京邮电大学MOOC平台上的高级语言程序设计C课程第八章作业,这里提供一个关于定义`Beeline`类以及基于此构建`Triangle`类的例子来满足题目要求。 ### 定义 Beeline 类 ```cpp #include <iostream> #include <cmath> class Beeline { private: double X1, Y1; double X2, Y2; public: // 构造函数,默认参数设为0 Beeline(double x1 = 0, double y1 = 0, double x2 = 0, double y2 = 0) : X1(x1), Y1(y1), X2(x2), Y2(y2) {} // 成员函数用于计算线段长度 double Length() const { return sqrt(pow((X2 - X1), 2) + pow((Y2 - Y1), 2)); } // 显示线段两个端点坐标 void show() const { std::cout << "(" << X1 << ", " << Y1 << ") to (" << X2 << ", " << Y2 << ")" << std::endl; } }; ``` ### 定义 Triangle 类 ```cpp class Triangle { private: Beeline line1, line2, line3; public: // 构造函数初始化三个边的数据成员 Triangle(Beeline l1, Beeline l2, Beeline l3) : line1(l1), line2(l2), line3(l3) {} // 计算三角形面积的方法(假设已知三边长) double Area() const { double a = line1.Length(); double b = line2.Length(); double c = line3.Length(); double s = (a + b + c) / 2; return sqrt(s * (s - a) * (s - b) * (s - c)); // 海伦公式 } // 打印方法展示三条边的信息及其围成的面积 void Print() const { std::cout << "Line 1: "; line1.show(); std::cout << "Line 2: "; line2.show(); std::cout << "Line 3: "; line3.show(); std::cout << "The area of the triangle is: " << Area() << std::endl; } }; ``` 上述代码实现了对平面内直线段和平面三角形的操作。通过创建`Beeline`实例表示各条边,并利用这些实例作为输入参数构造了一个名为`Triangle`的新对象。最后,在`Print()`函数内部调用了各个直线条目的`show()`方法打印出它们各自的起点和终点位置;同时也展示了如何使用海伦公式来求解由这三条边构成之封闭图形——即三角形——所覆盖的空间大小[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值