Swing组件开发的简易计算器(主要用到的是JTextField和JButton)

package com.sxt.java.Swing;


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


/**
 * Swing组件开发的简易计算器(主要用到的是JTextField和JButton)
 * @author Administrator
 *
 */
public class Calculator {


public static void main(String[] args) {//主方法
CalFrame calculator=new CalFrame();
calculator.show();
}


}
class CalFrame implements ActionListener{//窗口类


private JFrame mainFrame;//窗口对象
private JTextField text;//文本框
private JButton[] buttons;//按钮组
private char modifier='\0';//运算符
private double result;//运算结果
private boolean flag=false;//标记,是否单击了运算符按钮
public CalFrame(){
mainFrame=new JFrame("计算器v1.0");//创建必要组建
text=new JTextField();
buttons=new JButton[16];
init();//初始化
setFontAndColor();//设置字体颜色 
addEventHandle();//添加事件
}
private void init(){
JPanel north=new JPanel();
JPanel center=new JPanel();
north.setLayout(new FlowLayout());//流式布局
center.setLayout(new GridLayout(4,4,2,2));//网格布局
text=new JTextField(25);
north.add(text);
String str="123+456-789*0.=/";//用字符串来表示所有按钮字符
for (int i = 0; i < 16; i++) {
JButton jb=new JButton(String.valueOf(str.charAt(i)));
buttons[i]=jb;
center.add(jb);
}
mainFrame.add(north,BorderLayout.NORTH);
mainFrame.add(center,BorderLayout.CENTER);
}
public void show(){//显示窗口
mainFrame.pack();
mainFrame.setVisible(true);
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private void setFontAndColor(){//设置字体和颜色
Font f=new Font("黑体",Font.BOLD,20);
text.setFont(f);
for (int i = 0; i < buttons.length; i++) {
buttons[i].setFont(f);
buttons[i].setForeground(Color.RED);
}
}
public void addEventHandle(){
for (int i = 0; i < buttons.length; i++) {
buttons[i].addActionListener(this);//为每个按钮添加监听器对象
}
}

@Override
public void actionPerformed(ActionEvent e) {//实现actionlistenter接口,即可访问本对象的全部属性
String str=e.getActionCommand();//获得按钮上的文本
if ("0123456789.".indexOf(str)!=-1) {//输入的是数字
if (flag) {//如果已经单击了数字按钮
text.setText("");//文本框为空
flag=false;//恢复flag
}
text.setText(text.getText()+str);//设置字符
}else if("+-*/".indexOf(str)!=-1){//单击运算符按钮
modifier=str.charAt(0);
double num=Double.valueOf(text.getText());
result=num;
flag=true;//flag为true
}else if(str.charAt(0)=='='){//单击运算符按钮
if(modifier=='+'){//加法运算
double num=Double.valueOf(text.getText());
result+=num;
}
if(modifier=='-'){//减法运算
double num=Double.valueOf(text.getText());
result-=num;
}
if(modifier=='*'){//乘法运算
double num=Double.valueOf(text.getText());
result*=num;
}
if(modifier=='/'){//除法运算
double num=Double.valueOf(text.getText());
result/=num;
}
text.setText(result+"");
modifier='\0';
result=0;
}
}
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值