GUI 程序设计实验报告
广 州 大 学
实 验 报 告
学 院 工商管理学院
专业、班级 电子商务
姓名、学号
课程名称 Java语言程序设计
项目名称 GUI 程序设计
GUI 程序设计
开课实验室:文俊东606
2013年06月09日
学院工商管理学院年级、专业、班姓名成绩课程
名称Java语言程序设计实验项目
名 称GUI 程序设计
签名一、实验目的
掌握GUI 程序设计的基本技术;
掌握基本Widget的使用;
掌握通GUI设计用户接口的方法;
CalcFace类按照Lcd类进行改造(将两个类中的相关功能合并);
2. 由于GUI程序已是消息驱动的,程序运行后就处于一个循环中,因此原仿真程序中Calcface中的input()方法以及Calculator中的on()方法就可弃之不用了。
/// CalcFace.java ///
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import javax.swing.BorderFactory;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.CompoundBorder;
class CalcFace extends JPanel implements ActionListener
{
public CalcFace(String k, byte pr){
keys = k;
prec = pr++;
nbuf = new StringBuffer(prec);
reset1();
errorMode=false;
errorStr="";
d = new JLabel(in, JLabel.RIGHT);
setBorder(BorderFactory.createCompoundBorder(BorderFactory
.createLoweredBevelBorder(), BorderFactory.createEmptyBorder(5,
10, 5, 10)));
setLayout(new BorderLayout()); //设置布管理器
reset2();
add(d);
addMouseListener(new ClickHandler(this)); //注册事件监听器
}
public void setCalc(Calculator ca){
calc = ca;
}
public void showNumber(String s) {
d.setText(hl+prompt + s+ht);
}
public void showOp(char op) {
}
//如果输入的str为空,则清除errorMode
//相当于主控模决发送一个消息给计算器,使其可知道当前计算器对象当前的状态
public void errorInput(String str){
if(str.equals("")){
errorMode=false;
errorStr="";
}else{
errorMode=true;
errorStr=str;
prompt=prompt+"( "+str+ " )";
}
}
public void showStatus(String e){
prompt=e;
}
private void enter(char c)
{
//当计算器处于溢出状态时,只充许其在下面这段代码中执行。
if(errorMode){ //进入errormode,只接收规定字符
if(errorStr.indexOf(c)==-1){
reset1();