Import java.awt.event. *;
Import javax.swing. *;
Import javax.swing.border. *;
Import java.util.linkedlist; //Toolkit
Import java.text.numberformat; //Text package
/**
* java swing Simple Calculator
* @ The author is young
*
*/
The public class calculator extension framework implements the action listener//calculator class.
{
JTextField results;
number button number button[];
operator button operator button[];
Buttons radixpoint, positiveminus, backspace, reciprocal, equal, clear// Declarer variable.
//Count button, minus button, backspace button, countdown button, equal sign button and reset button.
Panel panel;
String operators [] = {"+","-","*", "/"};
LinkedList linked list;
boolean pressequal = false
Public Calculator ()//Construction
{
Super ("calculator");
linklist = new linked list();
number button = new number button[ 10];
for(int I = 0; I < = 9; i++) {
NumberButton[i] = new numeric button (i);
Numeric button [i]. addActionListener(this);
}
operator button = new operator button[4];
for(int I = 0; I<4; i++) {
operator button[I]= new operator button(operator[I]);
Operator button [i]. addActionListener(this);
}
Radixpoint = new button (".");
Positiveminus = New button ("+/-");
back space = new Button(" CE ");
Countdown = new button ("1/x");
Equal = New button ("=");
Clear = new button ("c");
radix point . set foreground(color . red);
positive MINUS . set foreground(color . red);
back space . set foreground(color . red);
reciprocal . set foreground(color . red);
equal . set foreground(color . red);
clear . set foreground(color . red);
radix point . addactionlistener(this);
positive MINUS . addactionlistener(this);
backspace . addactionlistener(this);
reciprocal . addactionlistener(this);
equal . addactionlistener(this);
clear . addactionlistener(this);
result = new JTextField( 10);
result . sethorizontal alignment(JTextField。 Right);
result . set foreground(color . black);
result . set background(color . white);
Result.setFont (new font ("TimesRoman", font. Plain,14));
Result.setBorder (the new SoftBevelBorder(BevelBorder). Reduce));
result . set editable(false);
Panel = new Panel();
panel . set layout(new GridLayout(4,5));
panel . add(number button[ 1]);
panel . add(number button[2]);
panel . add(number button[3]);
Panel.add (backspace);
panel . add(clear);
panel . add(number button[4]);
panel . add(number button[5]);
panel . add(number button[6]);
panel . add(operator button[0]);
panel . add(operator button[2]);
panel . add(number button[7]);
panel . add(number button[8]);
panel . add(number button[9]);
panel . add(operator button[ 1]);
panel . add(operator button[3]);
panel . add(number button[0]);
panel . add(positive MINUS);
Panel.add (reciprocal);
panel . add(radix point);
Panel.add (equal to);
Add (result, "North");
Add (panel, "center");
addWindowListener(new window adapter(){
public void window closing(window event e){
system . exit(0);
}
});
setSize(270,200);
setLocation(300,230);
set visible(true);
}
Public void action performed (action event e)//Click the button to handle the event.
{
If (e.getsource () instance of number button)//number button
{
number button b =(number button)e . getsource();
if (linklist.size() == 0) {
int number = b . get number();
linklist . add("+number);
result . settext("+number);
pressequal = false
}
else if(linklist . size()= = 1 & amp; & amppressequal == false) {
int number = b . get number();
String num =(String)linklist . get first();
string s = num . concat("+number);
linklist.set(0,s);
result.setText
} else if(linklist . size()= = 1 & amp; & amppressequal == true) {
int number = b . get number();
linklist . remove first();
linklist . add("+number);
pressequal = false
result . settext("+number);
} else if (linklist.size() == 2) {
int number = b . get number();
linklist . add("+number);
result . settext("+number);
} else if (linklist.size() == 3) {
int number = b . get number();
String num =(String)linklist . get last();
string s = num . concat("+number);
linklist.set(2,s);
result.setText
}
} else if (such as getsource () instance of operator button) //action button
{
operator button b =(operator button)e . get source();
if (linklist.size() == 1) {
String Fu Hao = b.getoperator ();
Linklist.add (Fu Hao);
} else if (linklist.size() == 2) {
String Fu Hao = b.getoperator ();
Linklist.set( 1, Fu Hao);
} else if (linklist.size() == 3) {
String Fu Hao = b.getoperator ();
String number 1 =(String)linklist . get first();
String number 2 =(String)linklist . get last();
String operator =(String)linklist . get( 1);
Try {
double n 1 = double . parse double(number 1);
double N2 = double . parse double(number 2);
double n = 0;
if(operator . equals("+"){
n = n 1+N2;
} else if(operator . equals("-"){
n = n 1-N2;
} else if(operator . equals(" * "){
n = n 1 * N2;
} else if(operator . equals("/"){
n = n 1/N2;
}
linklist . clear();
linklist . add("+n);
Linklist.add (Fu Hao);
result . settext("+n);
} catch (abnormal ee) {
}
}
} else if (e.getsource () = = equal)//equal sign button
{
pressequal = true
if(linklist . size()= = 1 | | linklist . size()= = 2){
String num =(String)linklist . get first();
result . settext("+num);
} else if (linklist.size() == 3) {
String number 1 =(String)linklist . get first();
String number 2 =(String)linklist . get last();
String operator =(String)linklist . get( 1);
Try {
double n 1 = double . parse double(number 1);
double N2 = double . parse double(number 2);
double n = 0;
if(operator . equals("+"){
n = n 1+N2;
} else if(operator . equals("-"){
n = n 1-N2;
} else if(operator . equals(" * "){
n = n 1 * N2;
} else if(operator . equals("/"){
n = n 1/N2;
}
result . settext("+n);
linklist.set(0," "+n);
linklist . remove last();
linklist . remove last();
} catch (abnormal ee) {
}
}
} else if (e.getsource () = = radixpoint)//several buttons.
{
if (linklist.size() == 0) {
pressequal = false
} else if(linklist . size()= = 1){
string dot = radix point . get label();
String num =(String)linklist . get first();
String s = null
if(num . index of(dot)= =- 1){
S = num.concat (point);
linklist.set(0,s);
} Otherwise {
s = num
}
linklist.set(0,s);
result.setText
}
else if (linklist.size() == 3) {
string dot = radix point . get label();
String num =(String)linklist . get last();
String s = null
if(num . index of(dot)= =- 1){
S = num.concat (point);
linklist.set(2,s);
} Otherwise {
s = num
}
result.setText
}
} else if (e.getsource () = = backspace)//backspace button
{
if (linklist.size() == 1) {
String num =(String)linklist . get first();
if(num . length()& gt; = 1) {
num = num.substring(0,num . length()- 1);
linklist.set(0,num);
result . settext(num);
} Otherwise {
linklist . remove last();
result . settext(" 0 ");
}
} else if (linklist.size() == 3) {
String num =(String)linklist . get last();
if(num . length()& gt; = 1) {
num = num.substring(0,num . length()- 1);
linklist.set(2,num);
result . settext(num);
} Otherwise {
linklist . remove last();
result . settext(" 0 ");
}
}
} else if (e.getsource () = = plus or minus)//minus button
{
if (linklist.size() == 1) {
String number 1 =(String)linklist . get first();
Try {
double d = double . parse double(number 1);
d =- 1 * d;
string str = string . value of(d);
linklist.set(0,str);
result . settext(str);
} catch (abnormal ee) {
}
} else if (linklist.size() == 3) {
String number 2 =(String)linklist . get last();
Try {
double d = double . parse double(number 2);
d =- 1 * d;
string str = string . value of(d);
linklist.set(2,str);
result . settext(str);
} catch (abnormal ee) {
}
}
} else if (e.getsource () = = countdown)//countdown button
{
if(linklist . size()= = 1 | | linklist . size()= = 2){
String number 1 =(String)linklist . get first();
Try {
double d = double . parse double(number 1);
d = 1.0/d;
string str = string . value of(d);
linklist.set(0,str);
result . settext(str);
} catch (abnormal ee) {
}
} else if (linklist.size() == 3) {
String number 2 =(String)linklist . get last();
Try {
double d = double . parse double(number 2);
d = 1.0/d;
string str = string . value of(d);
linklist.set(0,str);
result . settext(str);
} catch (abnormal ee) {
}
}
} else if (e.getsource () = = clear)//Clear button
{
pressequal = false
result . settext(" 0 ");
linklist . clear();
}
}
Public static void main (strinargs []) {
New calculator ();
}
}
Category Number Button Expand Button//Number Button Category
{
Int number;
Public numberbutton (int number)//construction
{
Super ("+number);
This.number = number;
set foreground(color . blue);
}
public int getNumber() {
Quantity returned;
}
}
Class Operator Button Extension Button//Operator Symbol Button Class
{
String operator;
Common Operator Button (String Operator)//Construction
{
Super (operator);
this.operator = operator
set foreground(color . red);
}
Public string getOperator() {
Return operator;
}
}