实验十一:图形界面二

 

源代码

package jisuanqi;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class p{

TextField tf = new TextField(40); //显示文本框
StringBuffer s1 = new StringBuffer(); //记录运算数字,以及保留结果
StringBuffer s2 = new StringBuffer(); //记录运算数字,保留上一个输入的数字或运算结果
static String flag = new String(); //标记运算符号:+,-,*,/
boolean start = true; //标记运算开始或结束,保证一次运算之后,第二次进行运算时能同时清空显示界面,即s1为空

public void init(){
//主界面
JFrame f = new JFrame("计算器");
JPanel p1 = new JPanel();
p1.add(tf);
f.add(p1,BorderLayout.NORTH);
JPanel p2 = new JPanel();
p2.setLayout(new GridLayout(0,2));
//动作监听器
ActionListener listen =new ActionListener() {
public void actionPerformed(ActionEvent T)
{//输入数字0~9
if(T.getActionCommand()=="0"){

if(!s1.toString().equals(new String())){
if(!start){
//s1清零,保证可以重新输入数字
s1.delete(0, s1.length());
}
start = true;
tf.setText(s1.append("0").toString());
}
}
if(T.getActionCommand()=="1"){
if(!start){
s1.delete(0, s1.length());
}
start = true;
tf.setText(s1.append("1").toString());
}
if(T.getActionCommand()=="2"){
if(!start){
s1.delete(0, s1.length());
}
start = true;
tf.setText(s1.append("2").toString());
}
if(T.getActionCommand()=="3"){
if(!start){
s1.delete(0, s1.length());
}
start = true;
tf.setText(s1.append("3").toString());
}
if(T.getActionCommand()=="4"){
if(!start){
s1.delete(0, s1.length());
}
start = true;
tf.setText(s1.append("4").toString());
}
if(T.getActionCommand()=="5"){
if(!start){
s1.delete(0, s1.length());
}
start = true;
tf.setText(s1.append("5").toString());
}
if(T.getActionCommand()=="6"){
if(!start){
s1.delete(0, s1.length());
}
start = true;
tf.setText(s1.append("6").toString());
}
if(T.getActionCommand()=="7"){
if(!start){
s1.delete(0, s1.length());
}
start = true;
tf.setText(s1.append("7").toString());
}
if(T.getActionCommand()=="8"){
if(!start){
s1.delete(0, s1.length());
}
start = true;
tf.setText(s1.append("8").toString());
}
if(T.getActionCommand()=="9"){
if(!start){
s1.delete(0, s1.length());
}
start = true;
tf.setText(s1.append("9").toString());
}

//退格Backspace
if(T.getActionCommand()=="Backspace"){
start = true;
if(s1.length()!=0){
//删除最后输入的一位
s1.deleteCharAt(s1.length()-1);
tf.setText(s1.toString());
}
}
//归零CE
if(T.getActionCommand()=="CE"){
//清空所有,start标记设为true
start = true;
s1.delete(0, s1.length());
s2.delete(0, s2.length());
tf.setText(s1.toString());
}
//清除C
if(T.getActionCommand()=="C"){
//清空当前输入,即s1清零
start = true;
s1.delete(0, s1.length());
tf.setText(s1.toString());
}
//加号
if(T.getActionCommand()=="+"){
start = true;
flag="+";
//s2接收s1的值
s2.append(String.valueOf(s1.toString()));
//s1清零,重新接收下一个数据
s1.delete(0, s1.length());
tf.setText(s1.toString());
}
//减号
if(T.getActionCommand()=="-"){
start = true;
flag="-";
s2.append(String.valueOf(s1.toString()));
s1.delete(0, s1.length());
tf.setText(s1.toString());
}
//乘号
if(T.getActionCommand()=="*"){
start = true;
flag="*";
s2.append(String.valueOf(s1.toString()));
s1.delete(0, s1.length());
tf.setText(s1.toString());
}
//除号
if(T.getActionCommand()=="/"){
start = true;
flag="/";
s2.append(String.valueOf(s1.toString()));
s1.delete(0, s1.length());
tf.setText(s1.toString());
}

};

};


//添加按钮以及监听器
JButton bks = new JButton("Backspace");
bks.addActionListener(listen);

JButton c = new JButton("C");
c.addActionListener(listen);
p2.add(bks);
p2.add(c);
f.add(p2);
JPanel p3 = new JPanel();
p3.setLayout(new GridLayout(4,4));
JButton b1 = new JButton("7");
p3.add(b1);
b1.addActionListener(listen);
JButton b2 = new JButton("8");
p3.add(b2);
b2.addActionListener(listen);
JButton b3 = new JButton("9");
p3.add(b3);
b3.addActionListener(listen);
JButton b4 = new JButton("/");
p3.add(b4);
b4.addActionListener(listen);
JButton b5 = new JButton("4");
p3.add(b5);
b5.addActionListener(listen);
JButton b6 = new JButton("5");
p3.add(b6);
b6.addActionListener(listen);
JButton b7 = new JButton("6");
p3.add(b7);
b7.addActionListener(listen);
JButton b8 = new JButton("*");
p3.add(b8);
b8.addActionListener(listen);
JButton b9 = new JButton("1");
p3.add(b9);
b9.addActionListener(listen);
JButton b10 = new JButton("2");
p3.add(b10);
b10.addActionListener(listen);
JButton b11 = new JButton("3");
p3.add(b11);
b11.addActionListener(listen);
JButton b12 = new JButton("-");
p3.add(b12);
b12.addActionListener(listen);
JButton b13 = new JButton("CE");
p3.add(b13);
b13.addActionListener(listen);
JButton b14 = new JButton("0");
p3.add(b14);
b14.addActionListener(listen);
JButton b16 = new JButton("=");
p3.add(b16);
b16.addActionListener(listen);
JButton b17 = new JButton("+");
p3.add(b17);
b17.addActionListener(listen);
f.add(p3,BorderLayout.SOUTH);
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
f.pack();
f.setVisible(true);
}

public static void main(String args[]){
//调用方法,实现计算器
new p().init();
}

}

 

 

 

 

结果:

 

心得:

 1.此次编写我熟悉了java图形用户界面的设计原理和程序结构

 2.通过编写还存在很多问题,还需要继续改善。

 
 
 

转载于:https://www.cnblogs.com/Z-js/p/10983545.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值