Java实验报告三[数组与图形用户界面]
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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
/*操作标识*/
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
private Stack
private String expression;//算数表达式
private double result=0.0;//计算结果
private Map
//初始化优先级约定(可根据计算的复杂程度扩展)
public CalculatorIn()