GUI実装計算機

22368 ワード

package java6799.calc;

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class TaskCalculator6799 extends JFrame {
	private JTextField txtResult;
	private JButton btnClear;
	private JPanel p1, p2;

	public TaskCalculator6799() {
		super("   ");
		this.setSize(230, 230);
		this.setLocation(200, 100);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		initUI6799();
		this.setVisible(true);
		//           
		this.setResizable(false);
	}

	private void initUI6799() {
		p1 = new JPanel();
		btnClear = new JButton("  ");
		txtResult = new JTextField(13);

		p1.add(txtResult);
		p1.add(btnClear);
		this.add(p1, BorderLayout.NORTH);

		p2 = new JPanel(new GridLayout(4, 4));

		//        ,            ,            
		//   :             
		String name = "789+456-123*0.=/";
		for (int i = 0; i < name.length(); i++) {
			JButton jb = new JButton("" + name.charAt(i));
			jb.addActionListener(new ButtonClick6799());
			p2.add(jb);
		}
		this.add(p2, BorderLayout.CENTER);
		//         
		btnClear.addMouseListener(new myMouseAdapter());
	}

	public static void main(String[] args) {
		new TaskCalculator6799();
	}

	class ButtonClick6799 implements ActionListener {
		double number1, number2, result;
		String number = null, operator = "+";

		@Override
		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
			//      
			if (e.getActionCommand().matches("[0-9\\.]")) {
				//        
				number = txtResult.getText() + e.getActionCommand();
				txtResult.setText(number);
			}
			//        
			else if (e.getActionCommand().matches("[\\+\\-\\*/]")) {
				//               
				number1 = Double.valueOf(txtResult.getText());
				//        
				txtResult.setText(txtResult.getText() + e.getActionCommand());
				//       
				operator = e.getActionCommand();

			}
			//       
			else if (e.getActionCommand().matches("[=]")) {
				//                          
				String[] splited = txtResult.getText().split("[\\+\\-\\*/]");
				//        
				txtResult.setText(txtResult.getText() + e.getActionCommand());
				//           number1
				number1 = Double.valueOf(splited[0]);
				//           number2
				number2 = Double.valueOf(splited[1]);

				//     
				switch (operator) {
				case "+":
					result = number1 + number2;
					break;
				case "-":
					result = number1 - number2;
					break;
				case "*":
					result = number1 * number2;
					break;
				case "/":
					result = number1 / number2;
					break;
				}

				//           
				txtResult.setText(txtResult.getText() + Double.toString(result));
			}

		}

	}
	//         
	class myMouseAdapter extends MouseAdapter{
		@Override
		public void mouseClicked(MouseEvent e) {
			// TODO Auto-generated method stub
			txtResult.setText("");
		}
	}
}