用java写的一个计算器(极度粗糙的)。
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Calculator extends JFrame{
private double num1,num2,result;
private char mysign;
private JButton [][] bt;
private JButton [] sign;
private JTextField awk;
private JButton zero;
public Calculator()
{
JPanel p1= new JPanel(new GridLayout(5,3));
JPanel p2 =new JPanel(new GridLayout(4,1));
setLayout(new BorderLayout());
awk =new JTextField(10);
awk.setPreferredSize(new Dimension(300,50)); //设置文本框大小
bt=new JButton[4][3]; //用来表示数字
sign =new JButton[4];
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
{
int num=i*3+j+1;
bt[i][j]=new JButton(""+num);
p1.add(bt[i][j]);
}
bt[3][0]=new JButton("0");
bt[3][1]=new JButton(".");
bt[3][2]=new JButton("=");
zero=new JButton("C");
for(int i=0;i<3;i++)
p1.add(bt[3][i]);
p1.add(zero);
sign[0]=new JButton("+");
sign[1]=new JButton("-");
sign[2]=new JButton("*");
sign[3]=new JButton("/");
for(int i=0;i<4;i++)
p2.add(sign[i]);
add(awk,BorderLayout.NORTH);
add(p1,BorderLayout.CENTER);
add(p2,BorderLayout.EAST);
//ftp.setText("1");
//实现监听器功能(数字1-9)
ActionListener[] listen= new ListenerNum[10];
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
listen[i*3+j]=new ListenerNum(i,j,awk);
bt[i][j].addActionListener(listen[i*3+j]);
}
}
listen[9]=new ListenerNum(0,-1,awk);
bt[3][0].addActionListener(listen[9]);
//小数点监听器
bt[3][1].addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
awk.setText(awk.getText().trim()+".");
}
});
//等号监听器
bt[3][2].addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
num2 = (Double.parseDouble(awk.getText().trim()));
calculate(mysign);
awk.setText(" "+result);
}
});
//四则符号监听器
sign[0].addActionListener(new ActionListener(){ //内部类不能使用外部的局部变量
public void actionPerformed(ActionEvent e)
{
num1 = (Double.parseDouble(awk.getText().trim()));
awk.setText("+");
mysign='+';
}
});
sign[1].addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
num1 = (Double.parseDouble(awk.getText().trim()));
awk.setText("-");
mysign='-';
}
});
sign[2].addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
num1 = (Double.parseDouble(awk.getText().trim()));
awk.setText("*");
mysign='*';
}
});
sign[3].addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
num1 = (Double.parseDouble(awk.getText().trim()));
awk.setText("/");
mysign='/';
}
});
//归零监听器
zero.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
awk.setText("");
}
});
}
public void calculate(char s)
{
switch(s)
{
case '+':
result=num1+num2;
break ;
case '-':
result=num1-num2;
break ;
case '*':
result=num1*num2;
break ;
case '/':
result=num1/num2;
break ;
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Calculator c=new Calculator();
c.setLocationRelativeTo(null);
c.setSize(400,325);
c.setDefaultCloseOperation(c.EXIT_ON_CLOSE);
c.setVisible(true);
}
}
class ListenerNum implements ActionListener{
//@Override
private int i,j;
private JTextField awk;
ListenerNum()
{
i=0;
j=0;
awk=null;
}
ListenerNum(int i,int j,JTextField awk)
{
this.i=i;
this.j=j;
this.awk=awk;
}
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
String s= awk.getText().trim();
int num=i*3+j+1;
if(s.equals("+")||s.equals("-")||s.equals("*")||s.equals("/"))
s=" "+num;
else
s+=num;
awk.setText(s);
}
}