- 论坛徽章:
- 0
|
主框架程序
package com.picc.chen.calculator;
import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import java.awt.Rectangle;
import java.awt.GridLayout;
import javax.swing.JButton;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/**
* Title: 简单计算器
*
* Description:
*
* Copyright: Copyright (c) 2007
*
* Company: PICC
*
* @author chen
* @version 1.0
*/
public class CalculatorFrame extends JFrame {
JPanel contentPane;
JTextField txtResult = new JTextField();
JPanel jPanel1 = new JPanel();
GridLayout gridLayout1 = new GridLayout();
JButton btn7 = new JButton();
JButton btn8 = new JButton();
JButton btn2 = new JButton();
JButton btn3 = new JButton();
JButton btn9 = new JButton();
JButton btn0 = new JButton();
JButton btnmultiply = new JButton();
JButton btn4 = new JButton();
JButton btndivide = new JButton();
JButton btn6 = new JButton();
JButton btn5 = new JButton();
JButton btnclear = new JButton();
JButton btn1 = new JButton();
JButton btnminus = new JButton();
JButton btnequal = new JButton();
JButton btnplus = new JButton();
boolean flag=false; //标志flag,初始化为false
String oper1; //第一个操作数
String oper2; //第二个操作数
int result; //计算结果
String action;
public CalculatorFrame() {
try {
setDefaultCloseOperation(EXIT_ON_CLOSE);
jbInit();
} catch (Exception exception) {
exception.printStackTrace();
}
}
/**
* Component initialization.
*
* @throws java.lang.Exception
*/
private void jbInit() throws Exception {
contentPane = (JPanel) getContentPane();
contentPane.setLayout(null);
setSize(new Dimension(400, 300));
setTitle("计算器");
txtResult.setBounds(new Rectangle(49, 25, 294, 27));
jPanel1.setBounds(new Rectangle(47, 68, 295, 193));
jPanel1.setLayout(gridLayout1);
gridLayout1.setColumns(4);
gridLayout1.setRows(4);
btn7.setText("7");
btn7.addActionListener(new CalculatorFrame_btn7_actionAdapter(this));
btn8.setText("8");
btn8.addActionListener(new CalculatorFrame_btn8_actionAdapter(this));
btn2.setText("2");
btn2.addActionListener(new CalculatorFrame_btn2_actionAdapter(this));
btn3.setText("3");
btn3.addActionListener(new CalculatorFrame_btn3_actionAdapter(this));
btn9.setText("9");
btn9.addActionListener(new CalculatorFrame_btn9_actionAdapter(this));
btn0.setText("0");
btn0.addActionListener(new CalculatorFrame_btn0_actionAdapter(this));
btnmultiply.setText("*");
btnmultiply.addActionListener(new
CalculatorFrame_btnmultiply_actionAdapter(this));
btn4.setText("4");
btn4.addActionListener(new CalculatorFrame_btn4_actionAdapter(this));
btndivide.setText("/");
btndivide.addActionListener(new CalculatorFrame_btndivide_actionAdapter(this));
btn6.setText("6");
btn6.addActionListener(new CalculatorFrame_btn6_actionAdapter(this));
btn5.setText("5");
btn5.addActionListener(new CalculatorFrame_btn5_actionAdapter(this));
btnclear.setText("C");
btnclear.addActionListener(new CalculatorFrame_btnclear_actionAdapter(this));
btn1.addActionListener(new CalculatorFrame_btn1_actionAdapter(this));
btnminus.setText("-");
btnminus.addActionListener(new CalculatorFrame_btnminus_actionAdapter(this));
btnequal.setText("=");
btnequal.addActionListener(new CalculatorFrame_btnequal_actionAdapter(this));
btnplus.setText("+");
btnplus.addActionListener(new CalculatorFrame_btnplus_actionAdapter(this));
btn1.setText("1");
contentPane.add(txtResult);
contentPane.add(jPanel1);
jPanel1.add(btn7);
jPanel1.add(btn8);
jPanel1.add(btn9);
jPanel1.add(btndivide);
jPanel1.add(btn4);
jPanel1.add(btn5);
jPanel1.add(btn6);
jPanel1.add(btnmultiply);
jPanel1.add(btn1);
jPanel1.add(btn2);
jPanel1.add(btn3);
jPanel1.add(btnminus);
jPanel1.add(btn0);
jPanel1.add(btnclear);
jPanel1.add(btnequal);
jPanel1.add(btnplus);
}
//按钮1方法
public void btn1_actionPerformed(ActionEvent e) { //按钮1按下时文本框显示按钮的命令字符串*/
if(flag){
txtResult.setText(btn1.getActionCommand()); //接受按下的第一个命令字符串
flag=false; //*作用很重要,接受第一个之后转变执行else后的语句
}else{ //当按下操作符时执行的语句
txtResult.setText(txtResult.getText()+btn1.getActionCommand());//接受连接输入的数字字符串
}
}
//按钮2
public void btn2_actionPerformed(ActionEvent e) {
if(flag){
txtResult.setText(btn2.getActionCommand());
flag=false;
}else{
txtResult.setText(txtResult.getText()+btn2.getActionCommand());
}
}
//按钮3
public void btn3_actionPerformed(ActionEvent e) {
if(flag){
txtResult.setText(btn3.getActionCommand());
flag=false;
}else{
txtResult.setText(txtResult.getText()+btn3.getActionCommand());
}
}
//按钮4
public void btn4_actionPerformed(ActionEvent e) {
if(flag){
txtResult.setText(btn4.getActionCommand());
flag=false;
}else{
txtResult.setText(txtResult.getText()+btn4.getActionCommand());
}
}
//按钮4
public void btn5_actionPerformed(ActionEvent e) {
if(flag){
txtResult.setText(btn5.getActionCommand());
flag=false;
}else{
txtResult.setText(txtResult.getText()+btn5.getActionCommand());
}
}
//按钮6
public void btn6_actionPerformed(ActionEvent e) {
if(flag){
txtResult.setText(btn6.getActionCommand());
flag=false;
}else{
txtResult.setText(txtResult.getText()+btn6.getActionCommand());
}
}
//按钮7
public void btn7_actionPerformed(ActionEvent e) {
if(flag){
txtResult.setText(btn7.getActionCommand());
flag=false;
}else{
txtResult.setText(txtResult.getText()+btn7.getActionCommand());
}
}
//按钮8
public void btn8_actionPerformed(ActionEvent e) {
if(flag){
txtResult.setText(btn8.getActionCommand());
flag=false;
}else{
txtResult.setText(txtResult.getText()+btn8.getActionCommand());
}
}
//按钮9
public void btn9_actionPerformed(ActionEvent e) {
if(flag){
txtResult.setText(btn9.getActionCommand());
flag=false;
}else{
txtResult.setText(txtResult.getText()+btn9.getActionCommand());
}
}
//按钮0
public void btn0_actionPerformed(ActionEvent e) {
if(flag){
txtResult.setText(btn0.getActionCommand());
flag=false;
}else{
txtResult.setText(txtResult.getText()+btn0.getActionCommand());
}
}
//按钮+
public void btnplus_actionPerformed(ActionEvent e) {
//oper1=Integer.parseInt(txtResult.getText());
action="plus"; //当操作符+按下时,将"plus"赋予字符串变量action
oper1=txtResult.getText(); //将文本框中的值以字符串的形式赋予oper1
//this.txtResult.setText(""); //将文本框的字符清零
flag=true; //操作符改为true
}
public void btndivide_actionPerformed(ActionEvent e) {
action="divide"; //操作符/按下时执行的语句
oper1=txtResult.getText(); //将第一次输入的文本框中的字符串值赋予oper1
//this.txtResult.setText("");
flag=true;
}
public void btnclear_actionPerformed(ActionEvent e) {
txtResult.setText(""); //操作符C按下时将文本框中的字符清零
}
public void btnminus_actionPerformed(ActionEvent e) {
action="minus"; //操作符-按下时执行的语句
oper1=txtResult.getText();
// this.txtResult.setText("");
flag=true;
}
public void btnmultiply_actionPerformed(ActionEvent e) {
action="multiply"; //操作符x按下时执行的语句
oper1=txtResult.getText();
flag=true;
}
public void btnequal_actionPerformed(ActionEvent e) { //操作符=按下的操作
int digit1;
int digit2;
oper2=txtResult.getText(); //将文本框中的字符串赋予oper2
if(flag==false){
if(action.equals("divide")){ //如果字符串action的值为divide执行的操作除法操作
digit1=Integer.parseInt(oper1);//将oper1字符串值转换为整形数,并赋予digit1
digit2=Integer.parseInt(oper2);//将oper1字符串值转换为整形数,并赋予digit1
result=digit1/digit2;
txtResult.setText(new Double(result).toString());
flag=true;
}else if(action.equals("plus")){//如果字符串action的值为plus执行的操作加法操作
digit1=Integer.parseInt(oper1);
digit2=Integer.parseInt(oper2);
result=digit1+digit2;
txtResult.setText(""+(int)result);
flag=true;
}else if(action.equals("multiply")){//如果字符串action的值为multiply执行的操作乘法操作
digit1=Integer.parseInt(oper1);
digit2=Integer.parseInt(oper2);
result=digit1*digit2;
txtResult.setText(""+(int)result);
flag=true;
}else if(action.equals("minus")){//如果字符串action的值为minus执行的操作减法操作
digit1=Integer.parseInt(oper1);
digit2=Integer.parseInt(oper2);
result=digit1-digit2;
txtResult.setText(""+(int)result);
flag=true;
}
}else{
txtResult.setText(oper1);
}
}
}
//以下为各个按钮的事件监听器类
class CalculatorFrame_btnequal_actionAdapter implements ActionListener {
private CalculatorFrame adaptee;
CalculatorFrame_btnequal_actionAdapter(CalculatorFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.btnequal_actionPerformed(e);
}
}
class CalculatorFrame_btnmultiply_actionAdapter implements ActionListener {
private CalculatorFrame adaptee;
CalculatorFrame_btnmultiply_actionAdapter(CalculatorFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.btnmultiply_actionPerformed(e);
}
}
class CalculatorFrame_btnminus_actionAdapter implements ActionListener {
private CalculatorFrame adaptee;
CalculatorFrame_btnminus_actionAdapter(CalculatorFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.btnminus_actionPerformed(e);
}
}
class CalculatorFrame_btnclear_actionAdapter implements ActionListener {
private CalculatorFrame adaptee;
CalculatorFrame_btnclear_actionAdapter(CalculatorFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.btnclear_actionPerformed(e);
}
}
class CalculatorFrame_btndivide_actionAdapter implements ActionListener {
private CalculatorFrame adaptee;
CalculatorFrame_btndivide_actionAdapter(CalculatorFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.btndivide_actionPerformed(e);
}
}
class CalculatorFrame_btnplus_actionAdapter implements ActionListener {
private CalculatorFrame adaptee;
CalculatorFrame_btnplus_actionAdapter(CalculatorFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.btnplus_actionPerformed(e);
}
}
class CalculatorFrame_btn0_actionAdapter implements ActionListener {
private CalculatorFrame adaptee;
CalculatorFrame_btn0_actionAdapter(CalculatorFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.btn0_actionPerformed(e);
}
}
class CalculatorFrame_btn9_actionAdapter implements ActionListener {
private CalculatorFrame adaptee;
CalculatorFrame_btn9_actionAdapter(CalculatorFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.btn9_actionPerformed(e);
}
}
class CalculatorFrame_btn8_actionAdapter implements ActionListener {
private CalculatorFrame adaptee;
CalculatorFrame_btn8_actionAdapter(CalculatorFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.btn8_actionPerformed(e);
}
}
class CalculatorFrame_btn7_actionAdapter implements ActionListener {
private CalculatorFrame adaptee;
CalculatorFrame_btn7_actionAdapter(CalculatorFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.btn7_actionPerformed(e);
}
}
class CalculatorFrame_btn6_actionAdapter implements ActionListener {
private CalculatorFrame adaptee;
CalculatorFrame_btn6_actionAdapter(CalculatorFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.btn6_actionPerformed(e);
}
}
class CalculatorFrame_btn5_actionAdapter implements ActionListener {
private CalculatorFrame adaptee;
CalculatorFrame_btn5_actionAdapter(CalculatorFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.btn5_actionPerformed(e);
}
}
class CalculatorFrame_btn4_actionAdapter implements ActionListener {
private CalculatorFrame adaptee;
CalculatorFrame_btn4_actionAdapter(CalculatorFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.btn4_actionPerformed(e);
}
}
class CalculatorFrame_btn3_actionAdapter implements ActionListener {
private CalculatorFrame adaptee;
CalculatorFrame_btn3_actionAdapter(CalculatorFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.btn3_actionPerformed(e);
}
}
class CalculatorFrame_btn2_actionAdapter implements ActionListener {
private CalculatorFrame adaptee;
CalculatorFrame_btn2_actionAdapter(CalculatorFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.btn2_actionPerformed(e);
}
}
class CalculatorFrame_btn1_actionAdapter implements ActionListener {
private CalculatorFrame adaptee;
CalculatorFrame_btn1_actionAdapter(CalculatorFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.btn1_actionPerformed(e);
}
}
主程序
package com.picc.chen.calculator;
import java.awt.Toolkit;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import java.awt.Dimension;
/**
* Title: 简单计算器
*
* Description:
*
* Copyright: Copyright (c) 2007
*
* Company: PICC
*
* @author chen
* @version 1.0
*/
public class Calculator {
boolean packFrame = false;
/**
* Construct and show the application.
*/
public Calculator() {
CalculatorFrame frame = new CalculatorFrame();
// Validate frames that have preset sizes
// Pack frames that have useful preferred size info, e.g. from their layout
if (packFrame) {
frame.pack();
} else {
frame.validate();
}
// Center the window
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = frame.getSize();
if (frameSize.height > screenSize.height) {
frameSize.height = screenSize.height;
}
if (frameSize.width > screenSize.width) {
frameSize.width = screenSize.width;
}
frame.setLocation((screenSize.width - frameSize.width) / 2,
(screenSize.height - frameSize.height) / 2);
frame.setVisible(true);
}
/**
* Application entry point.
*
* @param args String[]
*/
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
try {
UIManager.setLookAndFeel(UIManager.
getSystemLookAndFeelClassName());
} catch (Exception exception) {
exception.printStackTrace();
}
new Calculator();
}
});
}
}
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/39160/showart_308193.html |
|