运行组图
源程序代码:
import
javax.swing.*;
import
java.awt.*;
import
java.awt.event.*;
public class
CalculationTest{
public static void main(String [] argv)
{
EventQueue.invokeLater(new Runnable(){
public void run()
{
JFrame frame=new CalculationFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
}
}
class CalculationFrame
extends JFrame{
public CalculationFrame()
{
setTitle("计算机made by 蓝月追风");
CalculationPanel panel=new CalculationPanel();
add(panel);
this.setSize(300, 350);
}
}
class CalculationPanel
extends
JPanel
{
public CalculationPanel()
{
this.setLayout(new GridLayout(2,1));
JPanel buttonPanel=new ButtonPanel();
JPanel showPanel=new ShowPanel();
add(showPanel);
add(buttonPanel);
}
private class ShowPanel extends JPanel
{
ShowPanel()
{
panel=new JPanel();
down=new JTextArea(1,10);
up=new JTextArea(1,10);
panel.setLayout(new GridLayout(2,1));
panel.setBorder(BorderFactory.createLineBorder(Color.BLACK,
1));
down.setEditable(false);
down.setFont(new Font("Serifs",Font.BOLD,25));
up.setEditable(false);
//
lastShow.setBackground(Color.red);
//
showArea.setBackground(Color.BLUE);
down.setEditable(false);
down.setText("0");
panel.setPreferredSize(new Dimension(210,75));
panel.add(up);
panel.add(down);
add(panel);
setBorder(BorderFactory.createEmptyBorder(5, 3, 1, 3));
}
private JPanel panel;
}
private class ButtonPanel extends
JPanel
{
public ButtonPanel()
{
start=true;
equals=false;
total=true;
result=0;
button=new JButton[17];
ActionListener NA=new numberAction();
ActionListener CA=new commendAction();
GridBagLayout gridbag=new GridBagLayout();
setLayout(gridbag);
GridBagConstraints gbc;
int
gridx,gridy,gridwidth,gridheight,anchor,fill,ipadx,ipady;
double weightx,weighty;
Insets inset=new Insets(3,3,3,3);
gridx=0;gridy=0;gridwidth=1;gridheight=1;anchor=GridBagConstraints.CENTER;
fill=GridBagConstraints.BOTH;
ipadx=0;ipady=0;
weightx=0;weighty=0;
button[0]=new JButton("0");
gridy=3;gridx=0;
gridwidth=2;
gbc=new
GridBagConstraints(gridx,gridy,gridwidth,gridheight,weightx,weighty,anchor,fill,inset,ipadx,ipady);
gridbag.setConstraints(button[0], gbc);
add(button[0]);
button[0].addActionListener(NA);
button[1]=new JButton("1");
gridy=2;gridx=0;
gridwidth=1;
gbc=new
GridBagConstraints(gridx,gridy,gridwidth,gridheight,weightx,weighty,anchor,fill,inset,ipadx,ipady);
gridbag.setConstraints(button[1], gbc);
add(button[1]);
button[1].addActionListener(NA);
button[2]=new JButton("2");
gridx=1;
gbc=new
GridBagConstraints(gridx,gridy,gridwidth,gridheight,weightx,weighty,anchor,fill,inset,ipadx,ipady);
gridbag.setConstraints(button[2], gbc);
add(button[2]);
button[2].addActionListener(NA);
button[3]=new JButton("3");
gridx=2;
gbc=new
GridBagConstraints(gridx,gridy,gridwidth,gridheight,weightx,weighty,anchor,fill,inset,ipadx,ipady);
gridbag.setConstraints(button[3], gbc);
add(button[3]);
button[3].addActionListener(NA);
button[4]=new JButton("4");
gridy=1;gridx=0;
gbc=new
GridBagConstraints(gridx,gridy,gridwidth,gridheight,weightx,weighty,anchor,fill,inset,ipadx,ipady);
gridbag.setConstraints(button[4], gbc);
add(button[4]);
button[4].addActionListener(NA);
button[5]=new JButton("5");
gridx=1;
gbc=new
GridBagConstraints(gridx,gridy,gridwidth,gridheight,weightx,weighty,anchor,fill,inset,ipadx,ipady);
gridbag.setConstraints(button[5], gbc);
add(button[5]);
button[5].addActionListener(NA);
button[6]=new JButton("6");
gridx=2;
gbc=new
GridBagConstraints(gridx,gridy,gridwidth,gridheight,weightx,weighty,anchor,fill,inset,ipadx,ipady);
gridbag.setConstraints(button[6], gbc);
add(button[6]);
button[6].addActionListener(NA);
button[7]=new JButton("7");
gridx=0;gridy=0;
gbc=new
GridBagConstraints(gridx,gridy,gridwidth,gridheight,weightx,weighty,anchor,fill,inset,ipadx,ipady);
gridbag.setConstraints(button[7], gbc);
add(button[7]);
button[7].addActionListener(NA);
button[8]=new JButton("8");
gridx=1;
gbc=new
GridBagConstraints(gridx,gridy,gridwidth,gridheight,weightx,weighty,anchor,fill,inset,ipadx,ipady);
gridbag.setConstraints(button[8], gbc);
add(button[8]);
button[8].addActionListener(NA);
button[9]=new JButton("9");
gridx=2;
gbc=new
GridBagConstraints(gridx,gridy,gridwidth,gridheight,weightx,weighty,anchor,fill,inset,ipadx,ipady);
gridbag.setConstraints(button[9], gbc);
add(button[9]);
button[9].addActionListener(NA);
button[10]=new JButton(".");
gridy=3;
gridx=2;
gbc=new
GridBagConstraints(gridx,gridy,gridwidth,gridheight,weightx,weighty,anchor,fill,inset,ipadx,ipady);
gridbag.setConstraints(button[10], gbc);
add(button[10]);
button[10].addActionListener(CA);
button[11]=new JButton("+");
gridx=3;
gbc=new
GridBagConstraints(gridx,gridy,gridwidth,gridheight,weightx,weighty,anchor,fill,inset,ipadx,ipady);
gridbag.setConstraints(button[11], gbc);
add(button[11]);
button[11].addActionListener(CA);
button[12]=new JButton("-");
gridy=2;gridx=3;
gbc=new
GridBagConstraints(gridx,gridy,gridwidth,gridheight,weightx,weighty,anchor,fill,inset,ipadx,ipady);
gridbag.setConstraints(button[12], gbc);
add(button[12]);
button[12].addActionListener(CA);
button[13]=new JButton("*");
gridy=1;gridx=3;
gbc=new
GridBagConstraints(gridx,gridy,gridwidth,gridheight,weightx,weighty,anchor,fill,inset,ipadx,ipady);
gridbag.setConstraints(button[13], gbc);
add(button[13]);
button[13].addActionListener(CA);
button[14]=new JButton("/");
gridy=0;gridx=3;
gbc=new
GridBagConstraints(gridx,gridy,gridwidth,gridheight,weightx,weighty,anchor,fill,inset,ipadx,ipady);
gridbag.setConstraints(button[14], gbc);
add(button[14]);
button[14].addActionListener(CA);
button[15]=new JButton("=");
gridy=2;gridx=4;
gridwidth=1;
gridheight=2;
gbc=new
GridBagConstraints(gridx,gridy,gridwidth,gridheight,weightx,weighty,anchor,fill,inset,ipadx,ipady);
gridbag.setConstraints(button[15], gbc);
add(button[15]);
button[15].addActionListener(CA);
button[16]=new JButton("清除");
gridy=0;gridx=4;
gridwidth=1;
gridheight=2;
gbc=new
GridBagConstraints(gridx,gridy,gridwidth,gridheight,weightx,weighty,anchor,fill,inset,ipadx,ipady);
gridbag.setConstraints(button[16], gbc);
add(button[16]);
setBorder(BorderFactory.createEmptyBorder(0,5,5,5));
button[16].addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
up.setText("");
down.setText("0");
start=true;
equals=false;
total=true;
result=0;
}
});
}
private
class numberAction implements ActionListener
{
public void
actionPerformed(ActionEvent e)
{
String
input=e.getActionCommand();
if(total==true)
{
down.setText(""+input);
total=false;
}
else
down.append(""+input);
}
}
private
class commendAction implements ActionListener
{
public void
actionPerformed(ActionEvent e) {
String input=e.getActionCommand();
total=true;
if(start==true){
if(equals==true)
{
up.setText(up.getText()+down.getText()+input);
calculate(Double.parseDouble(down.getText()));
equals=false;
lastCommend=input;
}
else
{
result=Double.parseDouble(down.getText());
up.setText(result+input);
lastCommend=input;
}
start=false;
}
else{
if(lastCommend=="="){
up.setText(down.getText()+input);
lastCommend=input;
equals=true;
start=true;
}
else{
up.setText(up.getText()+down.getText()+input);
calculate(Double.parseDouble(down.getText()));
lastCommend=input;
}
}
}
}
private
void calculate(double x)
{
if(lastCommend.equals("+"))result+=x;
else
if(lastCommend.equals("-"))result-=x;
else
if(lastCommend.equals("*"))result*=x;
else
if(lastCommend.equals("/"))result/=x;
down.setText(""+result);
}
private
String lastCommend;//存储上一个运算符
private
double result;//存储结果
private
boolean start;//存储计算状态
private
boolean equals;//是否进行=运算
private
boolean total;//控制输入多位数如:78
JButton
button[];
private numberAction
NA;
private
commendAction CA;
}
private
JTextArea down;
private
JTextArea up;
}
思想与计算设计图解:
当然你也可以打开win7的简单计算机,运行几个例子观察下他的计算过程了。我也是根据他的过程编的。