先看一下windows的计算器UI:
我的UI:
package First;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import javax.swing.*;
public class Calculator extends JFrame {
JTextField aTextField = new JTextField(30);
JButton buttonBackspace = new JButton("Backspace");
JButton buttonCE = new JButton(" CE ");
JButton buttonClear = new JButton("Clear");
JButton buttonONE[]= {new JButton("MC"),new JButton("7"),new JButton("8"),
new JButton("9"),new JButton("/"),new JButton("sqrt")};
JButton buttonTWO[]= {new JButton("MR"),new JButton("4"),new JButton("5"),
new JButton("6"),new JButton("*"),new JButton("%")};
JButton buttonTHREE[]= {new JButton("MS"),new JButton("1"),new JButton("2"),
new JButton("3"),new JButton("-"),new JButton("1/x")};
JButton buttonFOUR[]= {new JButton("M+"),new JButton("0"),new JButton("+/-"),
new JButton("."),new JButton("+"),new JButton("=")};
public Calculator() {
// JFrame fr = new JFrame();
setLayout(new BorderLayout());
JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();
JPanel panel3 = new JPanel();
//从右向左显示文本
aTextField.setHorizontalAlignment(JTextField.RIGHT);
panel1.add(aTextField);
add(panel1, "North");
panel3.add(buttonBackspace);
panel3.add(buttonCE);
panel3.add(buttonClear);
add(panel3, "East");
panel2.setLayout(new GridLayout(0, 6));
for(int i=0;i<6;i++)
panel2.add(buttonONE[i]);
for(int i=0;i<6;i++)
panel2.add(buttonTWO[i]);
for(int i=0;i<6;i++)
panel2.add(buttonTHREE[i]);
for(int i=0;i<6;i++)
panel2.add(buttonFOUR[i]);
add(panel2, "South");
}
public static void main(String[] args) {
Calculator cal = new Calculator();
cal.setTitle("计算器");
cal.pack();
cal.setResizable(false);//设置不再改变大小
cal.setDefaultCloseOperation(EXIT_ON_CLOSE);
cal.setVisible(true);
}
}
package Cal;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class Calculator extends JFrame implements ActionListener{
JTextField text = new JTextField(30);
JButton []buttonBar = {new JButton("Backspace"),new JButton(" CE "),new JButton("Clear")};
JButton[] button = {new JButton("MC"),new JButton("7"),new JButton("8"),
new JButton("9"),new JButton("/"),new JButton("sqrt"),
new JButton("MR"),new JButton("4"),new JButton("5"),
new JButton("6"),new JButton("*"),new JButton("%"),
new JButton("MS"),new JButton("1"),new JButton("2"),
new JButton("3"),new JButton("-"),new JButton("1/x"),
new JButton("M+"),new JButton("0"),new JButton("+/-"),
new JButton("."),new JButton("+"),new JButton("=")};
char operator;
double a,b;
public Calculator() {
setLayout(new BorderLayout());
JPanel panel0 = new JPanel();
JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();
//从右向左显示文本
text.setHorizontalAlignment(JTextField.RIGHT);
panel0.add(text);
add(panel0, "North");
for(int i=0;i<3;i++)
panel1.add(buttonBar[i]);
add(panel1, "East");
//主面板
panel2.setLayout(new GridLayout(0, 6));
for(int i=0;i<6*4;i++)
panel2.add(button[i]);
add(panel2, "South");
for(int i=0;i<3;i++)
buttonBar[i].addActionListener(this);
for(int i=0;i<24;i++)
button[i].addActionListener(this);
}
public double compute(double a,double b)
{
if(operator=='+')return a+b;
if(operator=='*')return a*b;
if(operator=='-')return a-b;
return a/b;
}
public void actionPerformed(ActionEvent e){
String num=e.getActionCommand();
char c=num.charAt(0);
if(c=='+'||c=='-'||c=='*'||c=='/')
{
operator=c;
text.setText(text.getText()+num);
}
else if(c>='0'&&c<='9')
{
text.setText(text.getText()+num);
}
else if(c=='=')
{
String sp=String.valueOf(operator);
if(sp.equals("+")||sp.equals("*"))
{
sp="["+sp+"]";
}
String []str= text.getText().split(sp);
a=Double.parseDouble(str[0]);
b=Double.parseDouble(str[1]);
double ans=compute(a,b);
String abs=String.valueOf(ans);
text.setText(abs);
}
else if(c=='C')
text.setText("");
}
public static void main(String[] args) {
Calculator cal = new Calculator();
cal.setTitle("计算器");
cal.pack();
cal.setResizable(false);//设置不再改变大小
cal.setDefaultCloseOperation(EXIT_ON_CLOSE);
cal.setVisible(true);
}
}