JAVA培训报告

1,培训主题及简介:

主题:java计算器应用程序

简介:通过这个程序可以实现计算器的基本功能。程序是Frame类的子类。GridLayout用于布局组件,按钮和文本框组件存储在Panel类的容器中。程序中还使用了大量的else - if语句。

2、设计说明:

实验的目的

通过实践训练,结合实例进一步理解面向对象编程的基本概念,掌握编程的基本方法和技巧,灵活使用包,进一步理解接口,熟练掌握接口中事件的实现。深刻理解并灵活运用面向对象编程的基本特征,培养良好的编程风格,提高抽象思维和逻辑思维能力。

二、实验内容

写一个应用程序实现计算器。

三个程序介绍及其功能实现

程序需要导入导入java.awt.*,导入java.awt.event.*,导入java.lang.*,导入javax.swing.*包。①程序的基本框架是:先定义Frame类的一个子类,然后声明三个面板的布局,即定义GridLayout类gl1、gl2、gl3三个对象。然后有四个对象p0,p1,p2和p3定义了Panel类的容器,其中p0用于存储显示文本框组件,p1用于存储删除和重置按钮,p3用于存储数字按钮和操作按钮,p2用于存储其他功能按钮。②具体实现过程如下:(1)程序定义JTextField类的对象tf1、TextField类的对象tf2和button类的26个按钮,在Counter类的构造方法中初始化每个对象,适当排列面板,并相应地将每个按钮添加到相应的容器中,在实例化所有按钮并设置其前景色的同时注册监听器。

(2)各个组件的相应设计完成后,也就是程序运行后的可视化界面完成后,就会实现程序的内部事件过程,也就是界面的实现。定义了一个名为Bt的类来实现该接口。该程序在actionPerformed()方法中实现每个按钮和文本框组件的特定方法。在程序中,else-if语句用于实现按钮操作事件和处理事件的异常。

3.程序列表

导入Java . awt . *;

导入Java . awt . event . *;

导入Java . lang . *;

导入javax . swing . *;

公共类计数器扩展框架

{

//声明三个面板的布局

GridLayout gl1,gl2,gl3

面板p0,p1,p2,P3;

JTextField TF 1;

TextField tf2

按钮b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b16,b12,b13,b14,b15,b16,b17,b18,b 18

StringBuffer字符串;//显示在显示屏上的字符串

双x,y;//x和y是操作数。

int z;//Z表示点击了哪个操作符。0表示“+”,1表示“-”,2表示“*”,3表示“/”

静态双m;//记忆的数字

公共计数器()

{

GL 1 = new GridLayout(1,4,10,0);//实例化三个面板的布局

gl2=new GridLayout(4,1,0,15);

gl3=new GridLayout(4,5,10,15);

TF 1 = new JTextField(27);//显示屏

TF 1 . sethorizontal alignment(JTextField。对);

TF 1 . set enabled(false);

TF 1 . settext(" 0 ");

tf2 =新文本字段(10);//显示记忆的索引值。

tf2 . set editable(false);

//实例化所有按钮,设置它们的前景色并注册侦听器。

b0 =新建按钮(“退格”);

B0 . set foreground(color . red);

B0 . addactionlistener(new Bt());

b 1 =新建按钮(" CE ");

b 1 . set foreground(color . red);

b 1 . addactionlistener(new Bt());

b2 =新建按钮(" C ");

B2 . set foreground(color . red);

B2 . addactionlistener(new Bt());

b3 =新建按钮(" MC ");

B3 . set foreground(color . red);

B3 . addactionlistener(new Bt());

b4 =新建按钮(" MR ");

B4 . set foreground(color . red);

B4 . addactionlistener(new Bt());

b5 =新建按钮(" MS ");

b5 . set foreground(color . red);

b5 . addactionlistener(new Bt());

b6 =新建按钮(" M+");

B6 . set foreground(color . red);

B6 . addactionlistener(new Bt());

b7 =新建按钮(" 7 ");

B7 . set foreground(color . blue);

B7 . addactionlistener(new Bt());

b8 =新建按钮(" 8 ");

b8 . set foreground(color . blue);

b8 . addactionlistener(new Bt());

b9 =新建按钮(" 9 ");

B9 . set foreground(color . blue);

B9 . addactionlistener(new Bt());

b 10 =新建按钮("/");

b 10 . set foreground(color . red);

b 10 . addactionlistener(new Bt());

b 11 =新建按钮(" sqrt ");

b 11 . set foreground(color . blue);

b 11 . addactionlistener(new Bt());

b 12 =新建按钮(" 4 ");

b 12 . set foreground(color . blue);

b 12 . addactionlistener(new Bt());

b 13 =新建按钮(" 5 ");

b 13 . set foreground(color . blue);

b 13 . addactionlistener(new Bt());

b 14 =新建按钮(" 6 ");

b 14 . set foreground(color . blue);

b 14 . addactionlistener(new Bt());

b 15 =新建按钮(" * ");

b 15 . set foreground(color . red);

b 15 . addactionlistener(new Bt());

b 16 =新建按钮(" % ");

b 16 . set foreground(color . blue);

b 16 . addactionlistener(new Bt());

b 17 =新建按钮(" 1 ");

b 17 . set foreground(color . blue);

b 17 . addactionlistener(new Bt());

b 18 =新建按钮(" 2 ");

b 18 . set foreground(color . blue);

b 18 . addactionlistener(new Bt());

b 19 =新建按钮(" 3 ");

b 19 . set foreground(color . blue);

b 19 . addactionlistener(new Bt());

b20 =新建按钮("-");

b20 . set foreground(color . red);

b20 . addactionlistener(new Bt());

b 21 =新建按钮(" 1/X ");

b 21 . set foreground(color . blue);

b 21 . addactionlistener(new Bt());

b22 =新建按钮(" 0 ");

b22 . set foreground(color . blue);

b22 . addactionlistener(new Bt());

b23 =新建按钮("+/-");

b23 . set foreground(color . blue);

b23 . addactionlistener(new Bt());

b24 =新建按钮(".");

b24 . set foreground(color . blue);

b24 . addactionlistener(new Bt());

b25 =新建按钮("+");

b25 . set foreground(color . red);

b25 . addactionlistener(new Bt());

b26 =新建按钮(" = ");

b26 . set foreground(color . red);

b26 . addactionlistener(new Bt());

//实例化四个面板

p0 =新面板();

p 1 =新面板();

p2 =新面板();

P3 = new Panel();

//创建空的stringbuffer区域。

str = new string buffer();

//在面板p0中添加组件,并设置它们在框架中的位置和大小。

P0 . add(TF 1);

p0.setBounds(10,25,300,40);

//在panel p1中添加组件,并设置它们在框架中的位置和大小。

p 1 . set layout(GL 1);

p 1 . add(tf2);

p 1 . add(B0);

p 1 . add(b 1);

p 1 . add(B2);

p1.setBounds(10,65,300,25);

//在面板p2中添加组件,并设置其在框架中的位置和大小。

p2 . set layout(gl2);

p2 . add(B3);

p2 . add(B4);

p2 . add(b5);

p2 . add(B6);

p2.setBounds(10,110,40,150);

//在面板p3中添加组件,并设置其在框架中的位置和大小。

P3 . set layout(gl3);//设置p3的布局

P3 . add(B7);

P3 . add(b8);

P3 . add(B9);

P3 . add(b 10);

P3 . add(b 11);

P3 . add(b 12);

P3 . add(b 13);

P3 . add(b 14);

P3 . add(b 15);

P3 . add(b 16);

P3 . add(b 17);

P3 . add(b 18);

P3 . add(b 19);

P3 . add(b20);

P3 . add(b 21);

P3 . add(b22);

P3 . add(b23);

P3 . add(b24);

P3 . add(b25);

P3 . add(b26);

p3.setBounds(60,110,250,150);

//将框架中的布局设置为空,并添加4个面板。

set layout(null);

添加(P0);

添加(p 1);

添加(p2);

添加(P3);

setResizable(false);//禁止调整框架的大小

//匿名类关闭窗口

addWindowListener(new window adapter(){

公共void窗口关闭(WindowEvent e1)

{

system . exit(0);

}

});

set background(color . light gray);

setBounds(100,100,320,280);

set visible(true);

}

//构造侦听器

Bt类实现ActionListener

{

公共无效操作已执行(操作事件e2)

{

尝试{

If(e2.getSourCE()==b1)//选择“CE”清除。

{

TF 1 . settext(" 0 ");//清除显示。

str . setlength(0);//清除stringbuffer区域,为接收新的输入操作数做准备。

}

Else if(e2.getSource()==b2)//选择“c”清除。

{

TF 1 . settext(" 0 ");//清除显示。

str . setlength(0);

}

Else if(e2.getSource()==b23)//点击“+/-”选择输入操作数是正还是负。

{

x = double . parse double(TF 1 . gettext()。trim());

TF 1 . settext("+(-x));

}

Else if(e2.getSource()==b25)//点击加号按钮获取x和z的值,清除y的值。

{

x = double . parse double(TF 1 . gettext()。trim());

str . setlength(0);//清空缓冲区以接收另一个新操作数。

y = 0d

z = 0;

}

Else if(e2.getSource()==b20)//点击减号按钮,得到x和z的值,清除y的值。

{

x = double . parse double(TF 1 . gettext()。trim());

str . setlength(0);

y = 0d

z = 1;

}

else if(E2 . getsource()= = b 15)//单击乘法按钮获取x的值和z的值,并清除y的值。

{

x = double . parse double(TF 1 . gettext()。trim());

str . setlength(0);

y = 0d

z = 2;

}

else if(E2 . getsource()= = b 10)//单击除法按钮获得x的值和z的值,并将y的值留空。

{

x = double . parse double(TF 1 . gettext()。trim());

str . setlength(0);

y = 0d

z = 3;

}

Else if(e2.getSource()==b26)//点击等号按钮输出计算结果。

{

str . setlength(0);

开关(z)

{

案例0:TF 1 . settext("+(x+y));打破;

case 1:TF 1 . settext("+(x-y));打破;

案例二:TF 1 . settext("+(x * y));打破;

案例三:TF 1 . settext("+(x/y));打破;

}

}

Else if(e2.getSource()==b24)//单击“.”按钮输入小数。

{

if(tf1.getText()。修剪()。indexOf(“.”))!=-1)//判断字符串中是否包含小数点。

{

}

Else//不算的话,小。

{

If (tf1.gettext()。修剪()。equals(" 0 ")//如果最初显示为0。

{

str . setlength(0);

TF 1 . settext((str . append(" 0 "+E2 . getactioncommand()))。toString());

}

Elseif (tf1.gettext()。修剪()。equals(" ")//如果最初为空,则不执行任何操作。

{

}

其他

{

TF 1 . settext(str . append(E2 . getactioncommand())。toString());

}

}

y = 0d

}

else if(E2 . getsource()= = b 11)//求平方根。

{

x = double . parse double(TF 1 . gettext()。trim());

Tf1.setText("异常数字格式");

if(x & lt;0)

Tf1.setText("负数没有平方根");

其他

TF 1 . settext("+math . sqrt(x));

str . setlength(0);

y = 0d

}

else if(E2 . getsource()= = b 16)//单击“%”按钮。

{

x = double . parse double(TF 1 . gettext()。trim());

TF 1 . settext("+(0.01 * x));

str . setlength(0);

y = 0d

}

else if(E2 . getsource()= = b 21)//单击“1/X”按钮。

{

x = double . parse double(TF 1 . gettext()。trim());

如果(x==0)

{

Tf1.setText ("Divider不能为零");

}

其他

{

TF 1 . settext("+(1/x));

}

str . setlength(0);

y = 0d

}

Else if(e2.getSource()==b3)//MC是清空内存。

{

m = 0d

tf2 . settext(" ");

str . setlength(0);

}

Else if(e2.getSource()==b4)//MR引用被调用的存储数据。

{

if(tf2.getText()。trim()!= " ")//内存号

{

TF 1 . settext("+m);

}

}

Else if(e2.getSource()==b5)//MS是存储和显示的数据。

{

m = double . parse double(TF 1 . gettext()。trim());

tf2 . settext(" M ");

TF 1 . settext(" 0 ");

str . setlength(0);

}

Else if(e2.getSource()==b6)//M+要将显示的数字与存储的数据相加,点击MR查看新的数字。

{

m = m+double . parse double(TF 1 . gettext()。trim());

}

Else//选择其他按钮。

{

If(e2.getSource()==b22)//如果选择了数字键“0”,

{

If (tf1.gettext()。修剪()。equals(" 0 ")//如果显示为零,则什么都不做。

{

}

其他

{

TF 1 . settext(str . append(E2 . getactioncommand())。toString());

y = double . parse double(TF 1 . gettext()。trim());

}

}

Else if(e2.getSource()==b0)//选择了“退格”按钮。

{

如果(!Tf1.gettext()。修剪()。equals(" 0 ")//如果显示不为零。

{

if(str.length()!=1)

{

TF 1 . settext(str . delete(str.length()-1,str . length())。toString());//可能会引发字符串越界异常。

}

其他

{

TF 1 . settext(" 0 ");

str . setlength(0);

}

}

y = double . parse double(TF 1 . gettext()。trim());

}

Else//其他数字键

{

TF 1 . settext(str . append(E2 . getactioncommand())。toString());

y = double . parse double(TF 1 . gettext()。trim());

}

}

}

catch(NumberFormatException e){

Tf1.setText("异常数字格式");

}

catch(StringIndexOutOfBoundsException e){

Tf1.setText("字符串索引越界");

}

}

}

公共静态void main(String args[])

{

new Counter();

}

}

4.调试结果

5、实习经历