Java实验报告三[数组与图形用户界面]

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

J a v a面向对象编程实验报告

题目:数组与图形化界面

专业:计算机科学与技术

班级:1120541

学号:41

姓名:汪智

太原工业学院计算机工程系

2014年05月23日一、实验目的与要求

1、掌握Java编程中的数组的应用

2、掌握Java GUI编程的应用以及API的查阅

3、掌握Java GUI 窗体容器、布局管理器、基本组件、事件的注册实验内容

Java GUI实现如下图简单计算器

三、实施步骤

public

class extends JFrame {

/*结果输入框*/

private JTextField result;

/*操作键之前缓存*/

private StringBuilder beforeCache = new StringBuilder();

/*操作键之后缓存*/

private StringBuilder afterCache = new StringBuilder();

/*清除键*/

private JButton clean;

/*数字键*/

private JButton[] numberButs = new JButton[10];

/*操作键*/

private Map operKeyMap = new HashMap();

/*操作标识*/

private boolean operFlag = false;

public void setOperFlag(boolean operFlag) {

this.operFlag = operFlag;

}

public CalculatorDemo(){

initComp();

initMainWindow();

addListenerHandler();

}

②CleanButtonActionListenerImpl 类:

public class CleanButtonActionListenerImpl implements ActionListener {

private CalculatorDemo cal;

public CleanButtonActionListenerImpl(CalculatorDemo c){

this.cal = c;

}

@Override

public void actionPerformed(ActionEvent arg0) {

JTextField result = cal.getResult();

/*获取输入文本*/

String resultText= result.getText();

if(!resultText.equals("")){

//文本內容,重置為空

result.setText("");

//緩存清空

StringBuilder beforeCache = cal.getBeforeCache();

StringBuilder afterCache = cal.getAfterCache();

beforeCache.delete(0, beforeCache.length());

afterCache.delete(0, afterCache.length());

cal.setOperFlag(false);

}

}

}

③MainWindowListenerImpl 类:

public class MainWindowListenerImpl implements WindowListener { @Override

public void windowActivated(WindowEvent arg0) {

}

@Override

public void windowClosed(WindowEvent arg0) {

}

/***

* 当主窗体关闭时,推出整个程序

* */

@Override

public void windowClosing(WindowEvent arg0) {

System.out.println("退出计算器程序");

System.exit(0);

}

@Override

public void windowDeactivated(WindowEvent arg0) {

}

@Override

public void windowDeiconified(WindowEvent arg0) {

}

@Override

public void windowIconified(WindowEvent arg0) {

}

@Override

public void windowOpened(WindowEvent arg0) {

System.out.print("窗体打开");

}

}

④MouseListenerImpl 类:

public class MouseListenerImpl implements MouseListener{ @Override

public void mouseClicked(MouseEvent arg0) {

}

@Override

public void mouseEntered(MouseEvent event) {

JButton bt = (JButton)event.getSource();

bt.setForeground(Color.RED);

}

@Override

public void mouseExited(MouseEvent event) {

JButton bt = (JButton)event.getSource();

bt.setForeground(Color.BLACK);

}

@Override

public void mousePressed(MouseEvent arg0) {

}

@Override

public void mouseReleased(MouseEvent arg0) {

}

}

⑤NumKeyActionListenerImpl 类:

public class NumKeyActionListenerImpl implements ActionListener { private CalculatorDemo cal;

public NumKeyActionListenerImpl(CalculatorDemo c){

this.cal = c;

}

@Override

public void actionPerformed(ActionEvent event) {

/*获取当前操作的数字键对象*/

JButton but =(JButton)event.getSource();

/*

* 1.在没有按下操作键之前,

* 所有的数字键的值被缓存到beforeCache

*显示到输入框中

*/

/*获取数字键对应的输入值*/

String numVaue=but.getText();

if(!cal.isOperFlag()){

cal.getBeforeCache().append(numVaue);

cal.getResult().setText(cal.getBeforeCache().toString());

}else{

cal.getAfterCache().append(numVaue);

cal.getResult().setText(cal.getAfterCache().toString());

}

}

}

⑥OperKeyActionListenerImpl 类:

public class OperKeyActionListenerImpl implements ActionListener {

private CalculatorDemo cal;

public OperKeyActionListenerImpl(CalculatorDemo c){

this.cal = c;

}

@Override

public void actionPerformed(ActionEvent event) {

/*获取操作键*/

JButton but = (JButton)event.getSource();

//置空结果显示

cal.getResult().setText("");

cal.setOperFlag(true);

}

}

⑦Calculator 类:

public class Calculator {

private Stack operandStack=new Stack();//操作数堆栈

private Stack operatorStack=new Stack();//操作符堆栈

private String expression;//算数表达式

private double result=0.0;//计算结果

private Map priorityMap=new HashMap();//用于存储操作符优先级的Map

//初始化优先级约定(可根据计算的复杂程度扩展)

public CalculatorIn()

相关文档
最新文档