package com.test;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.DecimalFormat;
import static javax.swing.SwingConstants.RIGHT;
/**
* Created by Jason on 2018/5/24.
*/
public class Rock extends JFrame implements ActionListener
{
private JButton jButton_Numbers[];
private JButton jButton_Point;
private JButton jButton_Plus;
private JButton jButton_Minus;
private JButton jButton_Multiply;
private JButton jButton_Divide;
private JButton jButton_Equal;
private JPanel jPanel_Main;
private JTextField jTextField;
private String firstParament;
private String secondParament;
private String jTextFieldString;
private String jTextFieldValue;
private Object lastOperation;
public Rock()
{
lastOperation= new Object();
lastOperation=null;
firstParament=new String("");
secondParament=new String("");
jTextFieldString=new String("");
jTextFieldValue=new String("");
jTextField=new JTextField(12);
jButton_Numbers=new JButton[10];
jButton_Plus=new JButton("+");
jButton_Point=new JButton(".");
jButton_Minus=new JButton("-");
jButton_Multiply=new JButton("*");
jButton_Divide=new JButton("/");
jButton_Equal=new JButton("=");
jPanel_Main=new JPanel();
for (int i = 0;i<10;i++)
{
jButton_Numbers[i] = new JButton(""+i);
jPanel_Main.add(jButton_Numbers[i]);
jButton_Numbers[i].addActionListener(this);
}
jPanel_Main.add(jButton_Point);
jPanel_Main.add(jButton_Plus);
jPanel_Main.add(jButton_Minus);
jPanel_Main.add(jButton_Multiply);
jPanel_Main.add(jButton_Divide);
jPanel_Main.add(jButton_Equal);
jPanel_Main.add(jTextField);
jTextField.setHorizontalAlignment(RIGHT);
jButton_Point.addActionListener(this);
jButton_Equal.addActionListener(this);
jButton_Plus.addActionListener(this);
jButton_Minus.addActionListener(this);
jButton_Multiply.addActionListener(this);
jButton_Divide.addActionListener(this);
this.add(jPanel_Main);
this.setSize(500,300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
private void setjTextField(String s)
{
jTextField.setText(s);
}
private String getjTextField()
{
return jTextField.getText();
}
private String getJButtonText(Object object)
{
return ((JButton)object).getText();
}
private void handleJButtonNumbers(Object object)
{
if(jButton_Equal == lastOperation)
{
firstParament="";
secondParament="";
jTextFieldString="";
}
jTextFieldValue = String.format("%s%s",jTextFieldString,getJButtonText(object));
}
@Override
public void actionPerformed(ActionEvent e)
{
jTextFieldString=getjTextField();
jTextFieldValue=new String("");
Object object=e.getSource();
for(int i=0;i<10;i++)
{
if(jButton_Numbers[i] == object)
{
handleJButtonNumbers(object);
}
}
if(getJButtonText(object).equals("."))
{
handleJButtonNumbers(object);
}
if( getJButtonText(object).equals("+")
|| getJButtonText(object).equals("-")
|| getJButtonText(object).equals("*")
|| getJButtonText(object).equals("/") )
{
firstParament=getjTextField();
jTextFieldValue = "";
lastOperation=object;
}
if(getJButtonText(object).equals("="))
{
secondParament=jTextFieldString;
float result=0.0f;
firstParament = firstParament.equals("") ? "0" : firstParament;
secondParament = secondParament.equals("") ? "0" : secondParament;
switch (getJButtonText(lastOperation).charAt(0))
{
case '+':
result=parseFloat(firstParament)+parseFloat(secondParament);break;
case '-':
result=parseFloat(firstParament)-parseFloat(secondParament);break;
case '*':
result=parseFloat(firstParament)*parseFloat(secondParament);break;
case '/':
result=parseFloat(firstParament)/parseFloat(secondParament);break;
default:
System.out.println("default");
}
DecimalFormat df = new DecimalFormat("###.####");
jTextFieldValue = String.format(("%s"),df.format(result));
firstParament="";
secondParament="";
lastOperation=object;
}
setjTextField(jTextFieldValue);
}
private float parseFloat(String s)
{
return Float.parseFloat(s);
}
}
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.DecimalFormat;
import static javax.swing.SwingConstants.RIGHT;
/**
* Created by Jason on 2018/5/24.
*/
public class Rock extends JFrame implements ActionListener
{
private JButton jButton_Numbers[];
private JButton jButton_Point;
private JButton jButton_Plus;
private JButton jButton_Minus;
private JButton jButton_Multiply;
private JButton jButton_Divide;
private JButton jButton_Equal;
private JPanel jPanel_Main;
private JTextField jTextField;
private String firstParament;
private String secondParament;
private String jTextFieldString;
private String jTextFieldValue;
private Object lastOperation;
public Rock()
{
lastOperation= new Object();
lastOperation=null;
firstParament=new String("");
secondParament=new String("");
jTextFieldString=new String("");
jTextFieldValue=new String("");
jTextField=new JTextField(12);
jButton_Numbers=new JButton[10];
jButton_Plus=new JButton("+");
jButton_Point=new JButton(".");
jButton_Minus=new JButton("-");
jButton_Multiply=new JButton("*");
jButton_Divide=new JButton("/");
jButton_Equal=new JButton("=");
jPanel_Main=new JPanel();
for (int i = 0;i<10;i++)
{
jButton_Numbers[i] = new JButton(""+i);
jPanel_Main.add(jButton_Numbers[i]);
jButton_Numbers[i].addActionListener(this);
}
jPanel_Main.add(jButton_Point);
jPanel_Main.add(jButton_Plus);
jPanel_Main.add(jButton_Minus);
jPanel_Main.add(jButton_Multiply);
jPanel_Main.add(jButton_Divide);
jPanel_Main.add(jButton_Equal);
jPanel_Main.add(jTextField);
jTextField.setHorizontalAlignment(RIGHT);
jButton_Point.addActionListener(this);
jButton_Equal.addActionListener(this);
jButton_Plus.addActionListener(this);
jButton_Minus.addActionListener(this);
jButton_Multiply.addActionListener(this);
jButton_Divide.addActionListener(this);
this.add(jPanel_Main);
this.setSize(500,300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
private void setjTextField(String s)
{
jTextField.setText(s);
}
private String getjTextField()
{
return jTextField.getText();
}
private String getJButtonText(Object object)
{
return ((JButton)object).getText();
}
private void handleJButtonNumbers(Object object)
{
if(jButton_Equal == lastOperation)
{
firstParament="";
secondParament="";
jTextFieldString="";
}
jTextFieldValue = String.format("%s%s",jTextFieldString,getJButtonText(object));
}
@Override
public void actionPerformed(ActionEvent e)
{
jTextFieldString=getjTextField();
jTextFieldValue=new String("");
Object object=e.getSource();
for(int i=0;i<10;i++)
{
if(jButton_Numbers[i] == object)
{
handleJButtonNumbers(object);
}
}
if(getJButtonText(object).equals("."))
{
handleJButtonNumbers(object);
}
if( getJButtonText(object).equals("+")
|| getJButtonText(object).equals("-")
|| getJButtonText(object).equals("*")
|| getJButtonText(object).equals("/") )
{
firstParament=getjTextField();
jTextFieldValue = "";
lastOperation=object;
}
if(getJButtonText(object).equals("="))
{
secondParament=jTextFieldString;
float result=0.0f;
firstParament = firstParament.equals("") ? "0" : firstParament;
secondParament = secondParament.equals("") ? "0" : secondParament;
switch (getJButtonText(lastOperation).charAt(0))
{
case '+':
result=parseFloat(firstParament)+parseFloat(secondParament);break;
case '-':
result=parseFloat(firstParament)-parseFloat(secondParament);break;
case '*':
result=parseFloat(firstParament)*parseFloat(secondParament);break;
case '/':
result=parseFloat(firstParament)/parseFloat(secondParament);break;
default:
System.out.println("default");
}
DecimalFormat df = new DecimalFormat("###.####");
jTextFieldValue = String.format(("%s"),df.format(result));
firstParament="";
secondParament="";
lastOperation=object;
}
setjTextField(jTextFieldValue);
}
private float parseFloat(String s)
{
return Float.parseFloat(s);
}
}