swing-计算器

本文介绍了如何使用Java Swing工具包创建一个简单的计算器。通过新建对象、添加控件和事件监听,实现了计算器的功能。在实现过程中,利用JFrame作为主框架,JPanel作为容器,按钮和文本字段交互,同时运用栈来处理运算操作。
摘要由CSDN通过智能技术生成

Swing is a GUI widget toolkit for Java.[1] It is part of Oracle’s Java Foundation Classes (JFC) – an API for providing a graphical user interface (GUI) for Java programs.

swing就是一个写界面的Java工具包,跟delphi很像,最近写了做了一点简单的东西,整理一下。

代码过几天再贴吧,免得professor在网上查重复,把我的assignment打成cheating。

计算器

最终结果:
在这里插入图片描述1. 新建对象,所需要的container,button(数字和运算符),panel,textfield(设置为只读)
2. 添加容器到框架上,将panel添加到container,再将button,textfield加到panel上面。
3. 添加button,text field事件。

注意:JFrame用来做主页面框架也可以用来做顶级窗体,要想把控件放在该界面中,必须把控件放在JPanel中,然后再把JPanel放在JFrame中,JPanel作为一个容器使用。
Jpanel是一个静态控制组件,可以用来显示一行静态信息,不能接受用户的输入。它必须放在象JFrame这样的顶级窗口上才能输出。
JFrame是最底层,JPanel是置于其面上,同一个界面只有一个JFrame,一个JFrame可以放多个JPanel。

创建对象:
	JTextField l = new JTextField(16);
	JPanel p = new JPanel();
	Container c = new Container();
	Font f = new Font("Times",Font.BOLD,44);   //显示计算结果的字体
	Container c = getContentPane();  //  JFrame 对象中不能直接添加 AWT 或者 Swing 组件,这里用getContentPane()方法获得JFrame的内容面板,再对其加入组件
	//另一种JFrame添加组件的方式是建立一个Jpanel或JDesktopPane之类的中间容器,把组件添加到容器中
添加控件
		l.setFont(f);           	 	//添加字体格式
		l.setEditable(false);   		//计算器显示结果应该是不可编辑的
		c.add(BorderLayout.CENTER,p);	//添加JPanel到container
		c.add(l,BorderLayout.NORTH);    //添加JTextField到JPanel

		p.setLayout(new GridLayout(4,4,1,1));  //GridLayout(int rows, int cols, int hgap, int vgap)
//创建具有指定行数和列数的网格布局。
//rows - 该 rows 具有表示任意行数的值
//cols - 该 cols 具有表示任意列数的值
//hgap - 水平间距
//vgap - 垂直间距 
		for(int i=0;i<operand.length;i++) {
			JButton b = new JButton(operand[i]+"");
			b.addActionListener(new MyActionListener()); //添加监听事件
			p.add(b);		
		}
添加事件

对于运算符运算,这里使用栈进行处理。首先将第一个输入数字进栈,然后判别第二个输入的运算符如果为“+”或者“-”,与下一个输入数字进行相应处理。

			if(compute[i].equals("+")) {
				stack.pop();
				stack.push(Double.parseDouble(compute[i+1]));}
			if(compute[i].equals("-"))
				stack.push(-Double.parseDouble(compute[i+1]));
			if(compute[i].equals("X")) {
				Double re = stack.peek();
				stack.pop();
				stack.push(re*Double.parseDouble(compute[i+1]));
			}
			if(compute[i].equals("/")) {
				double divider = Double.parseDouble(compute[i+1]);
				Double re = stack.peek();
				stack.pop();
				stack.push(re/divider);
			}
最后构建JFrame
	my_cal cal = new my_cal(Color.BLACK,
				Color.GREEN,400,400);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值