昨天刚刚写了一个简易的日历程序之后,今天又试着用java 来写一个计算器的程序,这里只实现了加减乘除四则运算,不过四则运算成功了,其他的科学型计算器也不难了,关键就是监听控件,并且来实现响应。我觉得关键的地方就是从jtextfield里面获得字符串后来用float.valueof来强制转为float形,并且里面的变量要设置为类的属性,不然单独在action里面是不能够统统调用的。还有就是对settext方法的用法有了进一步的了解。
然后就是gridlayout和borderlayout有了更熟悉的了解。
附上源代码:
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.lang.management.OperatingSystemMXBean;
import javax.swing.*;
class Caculator extends JFrame implements ActionListener{
JPanel p=new JPanel(new GridLayout(4,4,3,3));
JTextField t=new JTextField();
String str[]={"7","8","9","÷","4","5","6","*","1","2","3","-","0",".","=","+"};
JButton btn[]=new JButton[str.length];
float a=0,b=0,result=0,c=0;
int operator=0;
public Caculator(){
super("my first java app");
setLayout(new BorderLayout());
for(int i=0;i<str.length;i++){
btn[i]=new JButton(str[i]);
p.add(btn[i]);
}
t.setHorizontalAlignment(JTextField.RIGHT);
add(t,BorderLayout.NORTH);
add(p,BorderLayout.CENTER);
setVisible(true);
setSize(250,200);
for(int i=0;i<str.length;i++)
{
btn[i].addActionListener(this);
}
this.setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e) {
if(e.getSource()==btn[0])
{
t.setText(t.getText()+"7");
}
if(e.getSource()==btn[1])
{
t.setText(t.getText()+"8");
}
if(e.getSource()==btn[2])
{
t.setText(t.getText()+"9");
}
if(e.getSource()==btn[4])
{
t.setText(t.getText()+"4");
}
if(e.getSource()==btn[5])
{
t.setText( t.getText()+"5");
}
if(e.getSource()==btn[6])
{
t.setText(t.getText()+"6");
}
if(e.getSource()==btn[8])
{
t.setText(t.getText()+"1");
}
if(e.getSource()==btn[9])
{
t.setText( t.getText()+"2");
}
if(e.getSource()==btn[10])
{
t.setText( t.getText()+"3");
}
if(e.getSource()==btn[12])
{
t.setText(t.getText()+"0");
}
if(e.getSource()==btn[3])
{
a=Float.valueOf(t.getText());
result=a;
t.setText("");
operator=1;
}
if(e.getSource()==btn[7])
{
a=Float.valueOf(t.getText());
result=a;
t.setText("");
operator=2;
}
if(e.getSource()==btn[11])
{
a=Float.valueOf(t.getText());
result=a;
t.setText("");
operator=3;
}
if(e.getSource()==btn[15])
{
a=Float.valueOf(t.getText());
result=a;
t.setText("");
operator=4;
}
if(e.getSource()==btn[13])
{
t.setText(t.getText()+".");
}
if(e.getSource()==btn[14])
{
switch (operator) {
case 1:
b=Float.valueOf(t.getText());
result=result/b;
t.setText(a+" ÷ "+b+" = "+result);
break;
case 2:
b=Float.valueOf(t.getText());
result=result*b;
t.setText(a+" * "+b+" = "+result);
break;
case 4:
b=Float.valueOf(t.getText());
result=result+b;
t.setText(a+" + "+b+" = "+result);
break;
case 3:
b=Float.valueOf(t.getText());
result=result-b;
t.setText(a+" - "+b+" = "+result);
break;
default:
break;
}
}
}
public static void main(String[] args){
Caculator gl=new Caculator();
}
}