import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Counter implements ActionListener{
/**
* @param args
*/
private JFrame frame;
private JTextField field;
private JButton clear_but;
private JButton[] buttons;
String str="123+456-789*0.=/";
public Counter() {
frame=new JFrame("計算器t\t\t\t\t\t\t");
field=new JTextField(15);
clear_but=new JButton("C");
buttons=new JButton[25];
for(int i=0;i<str.length();i++)
{
buttons[i]=new JButton(str.substring(i, i+1));
}
field.setText("");
}
private void init(){
addEventHandler();
frame.setLayout(new BorderLayout());
JPanel n_panel=new JPanel();
JPanel c_panel=new JPanel();
n_panel.setLayout(new FlowLayout());
frame.add(n_panel,BorderLayout.NORTH);
n_panel.add(field);
n_panel.add(clear_but);
c_panel.setLayout(new GridLayout(4,4));
for(int i=0;i<16;i++)
{
c_panel.add(buttons[i]);
}
frame.add(c_panel, BorderLayout.CENTER);
}
public void showMe(){
init();
frame.setSize(300, 240);
//frame.pack();// frame.setLocation(400,360);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private void addEventHandler(){
//clear_but.addActionListener(new MyActionListener());
clear_but.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
field.setText("");
}
});
for(int i=0;i<16;i++)
{
final int in=i;
buttons[i].addActionListener(this);
// @Override
// public void actionPerformed(ActionEvent e) {
// System.out.print(e.getActionCommand());
// //System.out.print(str.substring(in, in+1));
// }
//
}
}
String num="";
String flag="";
//@Override
public void actionPerformed(ActionEvent e) {
String str=e.getActionCommand();
if(str.equals("=")){
Double a=Double.valueOf(num);
Double b=Double.valueOf(field.getText());
double sum=0;
if(flag.equals("+")){
sum=a+b;
field.setText(sum+"");
}
if(flag.equals("-")){
sum=a-b;
field.setText(""+sum);
}
if(flag.equals("*")){
sum=a*b;
field.setText(""+sum);
}
if(flag.equals("/")){
sum=a/b;
field.setText(""+sum);
}
System.out.println(a+flag+b+"="+sum);
}
else if(".0123456789".indexOf(str)!=-1){
String newtext=field.getText();
newtext+=str;
field.setText(newtext);
//System.out.print(str);
}
else if(str.matches("[+*-/]{1}")){
//else if("+-*/".indexOf(str)!=-1){
num=field.getText();
field.setText("");
flag=str;
// System.out.print(str);
}
}
}
//class MyActionListener implements ActionListener{
//
// //@Override
// public void actionPerformed(ActionEvent e) {
// System.out.print("22222");
// }
//
//}