刚把计算器程序做出来,想迫不及待发表自己的感想,对我现在的水平来说做出一个计算器图形界面并且实现相应的加减乘除运算是一件让人是十分秃头的事情,其中我参考了这位博主的运算功能的实现,并在其代码上自己做了一些修改,大家有兴趣可以看下,他的有平方和删除键的实现:https://blog.csdn.net/wu2304211/article/details/52040009。谈一下自己的感悟和学到的东西:经历了三个晚上的奋战,不断地改正代码中出现的问题(通过百度一些搜索引擎去查询并改正错误,真的是一个很大的提升)然后在自己的代码中不断的思考那个地方出了问题也确实是一个思维的锻炼,接下来说一下自己设计计算器的思路:
首先先实现一个图形界面(使用GridLayout布局管理器,建立按钮JButton,显示数字和结果的JTextField);
然后:对JButton和JTextField加上监听处理(ActionListener);
最后:对监听事件进行处理,实现相应的功能运算。
//加法运算:
//减法运算:
//乘法运算
//除法运算
//相应代码
package demo05;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class Calculator implements ActionListener{
GridLayout layout;
JButton button1,button2,button3,button4,button5,button6,button7,button8,button9,button10,button11,button12,button13,button14,button15,button16;
JSplitPane jsp;
JFrame frame;
// JTextArea area;
JPanel pane1,pane2;
JTextField jtf;
public Calculator(){
frame=new JFrame("计算器");
frame.setSize(new Dimension(400,600));
layout=new GridLayout(4,4);
pane1=new JPanel(layout);
jtf=new JTextField();
jtf.setBounds(0, 0, 400, 200);
button1=new JButton("7");
button2=new JButton("8");
button3=new JButton("9");
button4=new JButton("/");
button5=new JButton("4");
button6=new JButton("5");
button7=new JButton("6");
button8=new JButton("*");
button9=new JButton("1");
button10=new JButton("2");
button11=new JButton("3");
button12=new JButton("+");
button13=new JButton(".");
button14=new JButton("0");
button15=new JButton("=");
button16=new JButton("-");
pane1.add(button1);
pane1.add(button2);
pane1.add(button3);
pane1.add(button4);
pane1.add(button5);
pane1.add(button6);
pane1.add(button7);
pane1.add(button8);
pane1.add(button9);
pane1.add(button10);
pane1.add(button11);
pane1.add(button12);
pane1.add(button13);
pane1.add(button14);
pane1.add(button15);
pane1.add(button16);
jsp=new JSplitPane(JSplitPane.VERTICAL_SPLIT,jtf,pane1);
frame.add(jsp);
button1.addActionListener(this);
button2.addActionListener(this);
button3.addActionListener(this);
button4.addActionListener(this);
button5.addActionListener(this);
button6.addActionListener(this);
button7.addActionListener(this);
button8.addActionListener(this);
button9.addActionListener(this);
button10.addActionListener(this);
button11.addActionListener(this);
button12.addActionListener(this);
button13.addActionListener(this);
button14.addActionListener(this);
button15.addActionListener(this);
button16.addActionListener(this);
jtf.addActionListener(this);
frame.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent event) {
Object obj=event.getSource();
if(obj instanceof JButton){
JButton button=(JButton)obj;
if(button14==button){
if(jtf.getText().equals("0")){
jtf.requestFocus();
}
else{
String str=jtf.getText();
jtf.setText(str+"0");
}
}
if(button9==button){
if(jtf.getText().equals("0")){
jtf.setText("");
jtf.setText("1");
jtf.requestFocus();
}
else{
String str=jtf.getText();
jtf.setText(str+"1");
}
}
if(button10==button){
if(jtf.getText().equals("0")){
jtf.setText("");
jtf.setText("2");
jtf.requestFocus();
}
else{
String str=jtf.getText();
jtf.setText(str+"2");
}
}
if(button11==button){
if(jtf.getText().equals("0")){
jtf.setText("");
jtf.setText("3");
jtf.requestFocus();
}
else{
String str=jtf.getText();
jtf.setText(str+"3");
}
}
if(button5==button){
if(jtf.getText().equals("0")){
jtf.setText("");
jtf.setText("4");
jtf.requestFocus();
}
else{
String str=jtf.getText();
jtf.setText(str+"4");
}
}
if(button6==button){
if(jtf.getText().equals("0")){
jtf.setText("");
jtf.setText("5");
jtf.requestFocus();
}
else{
String str=jtf.getText();
jtf.setText(str+"5");
}
}
if(button7==button){
if(jtf.getText().equals("0")){
jtf.setText("");
jtf.setText("6");
jtf.requestFocus();
}
else{
String str=jtf.getText();
jtf.setText(str+"6");
}
}
if(button1==button){
if(jtf.getText().equals("0")){
jtf.setText("");
jtf.setText("7");
jtf.requestFocus();
}
else{
String str=jtf.getText();
jtf.setText(str+"7");
}
}
if(button2==button){
if(jtf.getText().equals("0")){
jtf.setText("");
jtf.setText("8");
jtf.requestFocus();
}
else{
String str=jtf.getText();
jtf.setText(str+"8");
}
}
if(button3==button){
if(jtf.getText().equals("0")){
jtf.setText("");
jtf.setText("9");
jtf.requestFocus();
}
else{
String str=jtf.getText();
jtf.setText(str+"9");
}
}
if(button13==button){
if(jtf.getText().equals("0")){
jtf.setText("");
jtf.setText("");
jtf.requestFocus();
}
else{
String str=jtf.getText();
jtf.setText(str+"");
}
}
if(button12==button){
if(jtf.getText().equals("0")){
jtf.setText("");
jtf.setText("+");
jtf.requestFocus();
}
else{
String str=jtf.getText();
jtf.setText(str+"+");
}
}
if(button16==button){
if(jtf.getText().equals("0")){
jtf.setText("");
jtf.setText("-");
jtf.requestFocus();
}
else{
String str=jtf.getText();
jtf.setText(str+"-");
}
}
if(button8==button){
if(jtf.getText().equals("0")){
jtf.setText("");
jtf.setText("*");
jtf.requestFocus();
}
else{
String str=jtf.getText();
jtf.setText(str+"*");
}
}
if(button4==button){
if(jtf.getText().equals("0")){
jtf.setText("");
jtf.setText("/");
jtf.requestFocus();
}
else{
String str=jtf.getText();
jtf.setText(str+"/");
}
}
if(button13==button){
if(jtf.getText().equals("0")){
jtf.setText("");
jtf.setText(".");
jtf.requestFocus();
}
else{
String str=jtf.getText();
jtf.setText(str+".");
}
}
//等号实现加减乘除功能
if(button15==button){
if(jtf.getText().indexOf("+")!=-1){
String str=jtf.getText();
int i=str.indexOf("+");
String s=str.substring(0, i);
String s1=str.substring(i+1,str.length());
Double d1=Double.parseDouble(s);
Double d2=Double.parseDouble(s1);
double result=d1+d2;
String str1=String.valueOf(result);
jtf.setText(str1);
}
//减法运算
else
if(jtf.getText().indexOf("-")!=-1){
String str=jtf.getText();
int i=str.indexOf("-");
String s=str.substring(0, i);
String s1=str.substring(i+1,str.length());
Double d1=Double.parseDouble(s.trim());
Double d2=Double.parseDouble(s1);
double result=d1-d2;
String str1=String.valueOf(result);
jtf.setText(str1);
}
//乘法运算
else if(jtf.getText().indexOf("*")!=-1){
String str=jtf.getText();
int i=str.indexOf("*");
String s=str.substring(0, i);
String s1=str.substring(i+1,str.length());
Double d1=Double.parseDouble(s.trim());
Double d2=Double.parseDouble(s1);
double result=d1*d2;
String str1=String.valueOf(result);
jtf.setText(str1);
}
else if(jtf.getText().indexOf("/")!=-1){
String str=jtf.getText();
int i=str.indexOf("/");
String s=str.substring(0, i);
String s1=str.substring(i+1,str.length());
Double d1=Double.parseDouble(s.trim());
Double d2=Double.parseDouble(s1);
double result=d1/d2;
String str1=String.valueOf(result);
jtf.setText(str1);
}
else{
jtf.setText("请选择要输入的运算符");
}
}
}
}
public static void main(String[] args){
new Calculator();
}
}