java课程设计实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
java课程设计实验报告
一一实验目的
加深学生对课堂讲授内容的理解,从计算机语言的基本概念、程序设
计的基本方法、语法规则等方面加深理解,打好程序设计、开发软件的良
好基础。
在上机实验中,提高学生对Java语言各部分内容的综合使用能力,逐步掌握Java语言程序设计的规律与技巧。
在对Java程序的调试过程中,提高学生分析程序中出现的错误与排除这些错误的能力。
通过上机实践,
加深学生对计算机软件运行环境,以及对操作系统与计算机语言支持系统
相互关系的了解。
二、实验要求
(1)问题描述准确、规范;
(2)程序结构合理,调试数据准确、有代表性;(3)界面布局整齐,人机
交互方便;(4)输出结果正确;(5)正确撰写实验报告。
三、设计内容
11、计算器
计算器要有GUI界面,用户可以输入所需计算的数值,可以进行加、减、乘、除四种最基本的运算与混合运算,可以求一个数值的平方及倒数,可以
进行阶乘运算,要能运算小数,并且不会产生精度损失,在必要情况下,可以
进行四舍五入的运算。
允许正负数间的运算。
要求使用Applet实现该计
算器,当用浏览器运行程序时,点击网页中的按钮,则计算器弹出,浮在网页上,再次点击按钮时,计算器消失。
22、文本编辑器
可以设置文本的字体、大小、颜色等基本参数,可以读取计算机中TXT文件,可以生成一个新的TXT文件。
其她功能参照windows的文本编辑器。
四四.实验步骤(1)上机实验之前,为课程设计的内容作好充分准备。
对每次上机需要完成的任务进行认真的分析,画出程序流程图,手工写出符合任务要求的程序清单,准备出调试程序使用的数据,以便提高上机实验的效率。
(2)按照实验目的与实验内容进行上机操作。
录入程序,编译调试,反复修改,直到使程序正常运行,得出正确的输出结果为止。
(3)根据实验结果,写出实验报告。
五、、源代码及运行结果
1.计算器源代码importjava、awt、*;importjava、awt、event、*;importjava、lang、*;
importjavax、swing、
*;publicclassjisuanqiextendsWindowAdapter{//创建三个面板Panelp1=newPanel();
Panelp2=newPanel();
Panelp3=newPanel();
TextFieldtxt;
privateButton[]b=newButton[21];
privateStringss[]={"7","8","9","/","清空","4","5","6","*","1/x","1","2",
"3","-","平方",
"0","、","=","+","n!","关闭"};
staticdouble
a,sum=1;
staticStrings,
str;//定义变量创建对像//创建文本框
publicstaticvoidmain(Stringargs[])
{
(newjisuanqi())、frame();
}
publicvoidframe()
{
//设置文本框的名称
Framefm=newFrame("简单计算器");
for(inti=0;i<=20;i++)
{
b[i]=newButton(ss[i]);
}
for(inti=0;i<=19;i++)
{
p2、add(b[i]);//创建按钮并添加到P2
}
//按钮20背景色黄色
b[20]、setBackground(Color、yellow);
txt=newTextField("");
txt、setEditable(false);//不能编辑文本框里面的内容
txt、setBackground(Color、white);
for(inti=0;i<=20;i++)
{
b[i]、addActionListener(newbuttonlistener());//添加监听器}//设置关闭按钮
b[20]、addActionListener(newclose());
fm、addWindowListener(this);
p1、setLayout(newBorderLayout());//设置布局管理器
p1、add(txt,"North");//p1面板放到区域南部
p2、setLayout(newGridLayout(4,5,2,2));//布局:四行五列,间隔为二
p2、setBackground(Color、red);
p3、setLayout(newBorderLayout());
p3、add(b[20]);
将三个面板分别放到不同位置
fm、add(p1,"North");
fm、add(p2,"Center");
fm、add(p3,"South");
fm、pack();
fm、setVisible(true);//都就是些窗中设置添加相关组件与监听器}
publicvoidwindowClosing(WindowEvente){
System、exit(0);//退出系统
}classbuttonlistenerimplementsActionListener
{//编写监听器事件通过按键得出给果publicvoidactionPerformed(ActionEvente)
{
Buttonbtn=(Button)e、getSource();
if(btn、getLabel()=="=")
{
jisuan();
str=String、valueOf(a);
txt、setText(str);//显示当前数字s="";//清零
}
elseif
(btn、getLabel()=="+")
{
//设置一个方法
jisuan();
txt、setText("");
s="+";
}
elseif
(btn、getLabel()=="-")
{
jisuan();
txt、setText("");
s="-";
}elseif
(btn、getLabel()=="/")
{
jisuan();
txt、setText("");
s="/";
}elseif
(btn、getLabel()=="*")
{
jisuan();
txt、setText("");
s="*";}elseif
(btn、getLabel()=="平方")
{
a=Double、parseDouble(txt、getText()); a*=a;
txt、setText(""+String、valueOf(a)); }elseif
(btn、getLabel()=="n!")
{
a=Double、parseDouble(txt、getText());
sum=1;
for(inti=1;i<=a;i++)
sum=sum*i;
txt、setText(""+String、valueOf(sum));
}elseifbtn、getLabel()=="1/x")
{
a=Double、parseDouble(txt、getText());
txt、setText(""+String、valueOf(1/a));
}
else
{
txt、setText(txt、getText()+btn、getLabel()); if(btn、getLabel()=="清空")
txt、setText("");
}}
publicvoidjisuan(){//编写具体计算方法
if(s=="+")
a+=Double、parseDouble(txt、getText()); elseif(s=="-")
a-=Double、parseDouble(txt、getText()); elseif(s=="*")
a*=Double、parseDouble(txt、getText()); elseif(s=="/")
a/=Double、parseDouble(txt、getText()); else
a=Double、parseDouble(txt、getText()); }}}classcloseimplementsActionListener {//退出
publicvoidactionPerformed(ActionEvente) {
System、exit(0);
}}、2、计算器运行界面(11)
计算器主界面
(22)
面板的实现
11、创建三个面板分别就是显示数字的面板、按钮的面板与“关闭”的面板
Panelp1=newPanel();
Panelp2=newPanel();
Panelp3=newPanel();22、创建一个文本框参数
TextFieldtxt;33、创建一群按钮参数并给按钮赋值
privateButton[]b=newButton[21];
privateStringss[]={"7","8","9","/","清空","4","5","6","*","1/x","1","2",
"3","-","平方",
"0","、","=","+","n!","关闭"};44、创建文本框
publicstaticvoidmain(Stringargs[])
{
(newjisuanqi())、frame();
}55、设置文本框方法
publicvoidframe()
{//设置文本框的名称
Framefm=newFrame("简单计算器");66、设置按钮
for(inti=0;i<=20;i++)
{
b[i]=newButton(ss[i]);
}
77、设将按钮添加到面板
for(inti=0;i<=19;i++)
{
p2、add(b[i]);//创建按钮并添加到P2
}
88、设置按钮020背景色黄色
b[20]、setBackground(Color、yellow);99、创建文本框,,并规定不能编辑内容与背景为白色
txt=newTextField("");
txt、setEditable(false);
txt、setBackground(Color、white);10、为按钮添加监听器
for(inti=0;i<=20;i++)
{
b[i]、addActionListener(newbuttonlistener());//添加监听器
}11、设置“关闭”按钮可以关闭界面并设置监听器
b[20]、addActionListener(newclose());
fm、addWindowListener(this);
12、设置布局
p1、setLayout(newBorderLayout());//设置布局管理器
p1、add(txt,"North");//p1面板放到区域南部
p2、setLayout(newGridLayout(4,5,2,2));//布局:四行五列,间隔为二p2、setBackground(Color、red);
p3、setLayout(newBorderLayout());
p3、add(b[20]);
13、将三个面板分别放到不同位置
fm、add(p1,"North");
fm、add(p2,"Center");
fm、add(p3,"South");
fm、pack();
fm、setVisible(true);//都就是些窗中设置添加相关组件与监听器}14、退出系统
publicvoidwindowClosing(WindowEvente)
{
System、exit(0);
}(33)
将按钮添加到计算这个事件中
11、编写监听器事件
通过按键得出给果
publicvoidactionPerformed(ActionEvente)
{//将按钮赋予这个事件中
Buttonbtn=(Button)e、getSource();
22、如果点击“==”这个按钮,,将出现当前数字
if(btn、getLabel()=="=")
{
jisuan();
str=String、valueOf(a);
txt、setText(str);//显示当前数字
s="";//清零
}
33、如果点击“++”“--”“**”“//”分别完成一个方法并将结果显示到文本框
elseif
(btn、getLabel()=="+")
{
//设置一个方法
jisuan();
txt、setText("");
s="+";
}
elseif
(btn、getLabel()=="-") {
jisuan();
txt、setText("");
s="-";
}elseif
(btn、getLabel()=="/") {
jisuan();
txt、setText("");
s="/";
}elseif
(btn、getLabel()=="*")
{
jisuan();
txt、setText("");
s="*";}44、如果点击“平方”则当前数字与原数字形成即完成相关方法
结果显示最终的数字
elseif
(btn、getLabel()=="平方")
{
a=Double、parseDouble(txt、getText());
a*=a;
txt、setText(""+String、valueOf(a));//显示a}55、当输入“nn!”,,就用rfor循环完成阶乘,,此方法属于cc语言基础方法,,不做相关解释
elseif
(btn、getLabel()=="n!")
{
a=Double、parseDouble(txt、getText());
sum=1;//归一
for(inti=1;i<=a;i++)
sum=sum*i;
txt、setText(""+String、valueOf(sum));//文本框中显示“sum”的数值}
66、当输入“1/x”时,,显示1/a。
elseifbtn、getLabel()=="1/x")
{
a=Double、parseDouble(txt、getText());
txt、setText(""+String、valueOf(1/a));
}
7.如果输入“清空”文本框成为空文本框
else
{
txt、setText(txt、getText()+btn、getLabel());
if(btn、getLabel()=="清空")
txt、setText("");
}(44)
设置“jisuan”方法
11、编写具体计算方法其实这些方法可以放到上面事件的实现中,,从
”“平方”,,“nn”!”,,“1/x”就可以瞧出。
但为了程序的美观与高识别性,,我们传建一个方法来实现
if(s=="+")
a+=Double、parseDouble(txt、getText());
elseif(s=="-")
a-=Double、parseDouble(txt、getText());
elseif(s=="*")
a*=Double、parseDouble(txt、getText());
elseif(s=="/")
a/=Double、parseDouble(txt、getText());
else
a=Double、parseDouble(txt、getText());
3.文本编辑器源代码
importjava、awt、*;importjavax、swing、*;importjava、awt、event、*;
importjavax、swing、event、*;importjava、io、
*;publicclassTextEditor{
publicstaticvoidmain(Stringargs[])
{
TextFrameframe=newTextFrame();
frame、setDefaultCloseOperation(JFrame、EXIT_ON_CLOSE);
frame、show();
}
}classTextFrameextendsJFrame{
//文件中的参数
=null;
staticStringd,k,s;
//编辑中的参数
Stringselected,text;
//格式中的参数
StringsizeNames[]={"5","10","15","20","25","30","35","40","4 5","50"};
StringcolorNames[]={"黑色","红色","蓝色","绿色","白色","黄色","粉红"};
StringfontNames[]={"宋体","华文行楷","隶书","黑体","仿宋","华文彩云","楷体","方正姚体"};
StringstyleNames[]={"粗体","斜体"};
publicTextFrame()
{//设置文本框大小、名称
setTitle("西西牌文本编辑器");
setSize(400,400);
addWindowListener(newLogoutAction());
J();//创建一个文件选择器
//创建文本区
t1=newJTextArea(0,0);//面板与文本框无间隙scrollPane=newJScrollPane(t1);//设置滚动条getContentPane()、add(scrollPane);
//创建菜单栏
menuBar=newJMenuBar();
setJMenuBar(menuBar);
//文件
JMenu("文件(F)");
("F");//设置快捷键
newItem=newJMenuItem("新建(N)","N"); openItem=newJMenuItem("打开(O)、、、","O"); saveItem=newJMenuItem("保存(S)","S"); exitItem=newJMenuItem("退出(E)","E");
//设置监听器
newItem、addActionListener(new());
openItem、addActionListener(new());
saveItem、addActionListener(new());
exitItem、addActionListener(new());
//设置加速器
newItem、setAccelerator(KeyStroke、getKeyStroke(KeyEvent、
VK_N,InputEvent、CTRL_MASK));
openItem、setAccelerator(KeyStroke、getKeyStroke(KeyEvent、
VK_O,InputEvent、CTRL_MASK));saveItem、setAccelerator(KeyStroke、getKeyStroke(KeyEvent、VK_S,InputEvent、CTRL_MASK));
//添加按钮到文件菜单栏
(newItem);
(openItem);
(saveItem);
(exitItem);
//编辑
edit=newJMenu("编辑(E)");
edit、setMnemonic("E");
//创建菜单项
cutItem=newJMenuItem("剪切(T)");
copyItem=newJMenuItem("复制(C)");
pasteItem=newJMenuItem("粘贴(P)");
deleteItem=newJMenuItem("删除(L)");
selectAllItem=newJMenuItem("全选(A)");
//设置加速器
cutItem、setAccelerator(KeyStroke、getKeyStroke(KeyEvent、
VK_X,InputEvent、CTRL_MASK));
copyItem、setAccelerator(KeyStroke、getKeyStroke(KeyEvent、
VK_C,InputEvent、CTRL_MASK));
pasteItem、setAccelerator(KeyStroke、getKeyStroke(KeyEvent、VK_V,InputEvent、CTRL_MASK));
deleteItem、setAccelerator(KeyStroke、getKeyStroke(KeyEvent、VK_L,InputEvent、CTRL_MASK));
selectAllItem、setAccelerator(KeyStroke、
getKeyStroke(KeyEvent、VK_A,InputEvent、
CTRL_MASK));
//设置监听器
cutItem、addActionListener(newEditListener());
copyItem、addActionListener(newEditListener());
pasteItem、addActionListener(newEditListener());
deleteItem、addActionListener(newEditListener()); selectAllItem、addActionListener(newEditListener()); //添加按钮到“编辑”菜单栏
edit、add(cutItem);
edit、add(copyItem);
edit、add(pasteItem);
edit、add(deleteItem);
edit、add(selectAllItem);
//格式
format=newJMenu("格式(O)");
format、setMnemonic("O");
sizeItem=newJMenu("字体大小");
colorItem=newJMenu("字体颜色");
fontItem=newJMenu("字体");
styleItem=newJMenu("字体风格");
sizes=newJRadioButtonMenuItem[sizeNames、length]; colors=newJRadioButtonMenuItem[colorNames、length]; fonts=newJRadioButtonMenuItem[fontNames、length]; styles=newJCheckBoxMenuItem[styleNames、length];
styleGroup=newButtonGroup();
fontGroup=newButtonGroup();
colorGroup=newButtonGroup();
sizeGroup=newButtonGroup();
//将每种元素放进菜单项与按钮组中
for(inti=0;i<sizes、length;i++)
{
sizes[i]=newJRadioButtonMenuItem(sizeNames[i]); sizes[i]、addItemListener(newFormatListener()); sizeGroup、add(sizes[i]);
sizeItem、add(sizes[i]);
}
for(inti=0;i<colors、length;i++)
{
colors[i]=newJRadioButtonMenuItem(colorNames[i]); colors[i]、addItemListener(newFormatListener()); colorGroup、add(colors[i]);
colorItem、add(colors[i]);
}
for(inti=0;i<fonts、length;i++)
{
fonts[i]=newJRadioButtonMenuItem(fontNames[i]); fonts[i]、addItemListener(newFormatListener()); fontGroup、add(fonts[i]);
fontItem、add(fonts[i]);
}
for(inti=0;i<styles、length;i++)
{
styles[i]=newJCheckBoxMenuItem(styleNames[i]); styles[i]、addItemListener(newFormatListener()); styleItem、add(styles[i]);
}
format、add(sizeItem);
format、add(colorItem);
format、add(fontItem);
format、add(styleItem);
//查瞧
view=newJMenu("关于我们(us)");
view、setMnemonic("U");
formItem=newJMenuItem("组成成员");
formItem、addActionListener(newViewListener()); impressionItem=newJMenuItem("学习感言"); impressionItem、addActionListener(newViewListener()); view、add(formItem);
view、add(impressionItem);
//将菜单添加到菜单栏中
menuBar、add(files);
menuBar、add(edit);
menuBar、add(format);
menuBar、add(view);
//弹出式菜单及其菜单项
popup=newJPopupMenu();
cutItemPop=newJMenuItem("剪切(T)");
cutItemPop、addActionListener(newEditListener()); copyItemPop=newJMenuItem("复制(C)");
copyItemPop、addActionListener(newEditListener()); pasteItemPop=newJMenuItem("粘贴(P)");
pasteItemPop、addActionListener(newEditListener()); deleteItemPop=newJMenuItem("删除(L)");
deleteItemPop、addActionListener(newEditListener()); selectAllItemPop=newJMenuItem("全选(A)"); selectAllItemPop、addActionListener(newEditListener()); //添加
popup、add(cutItemPop);
popup、add(copyItemPop);
popup、add(pasteItemPop);
popup、add(deleteItemPop);
popup、add(selectAllItemPop);
//实现弹出式菜单的弹出触发器
t1、addMouseListener(newMouseAdapter()
{
//释放按钮触发事件
publicvoidmouseReleased(MouseEvente)
{
if(e、isPopupTrigger())//指定弹出式菜单的成员以及显示位置}
}
);
}
privateclass
implementsActionListener
{
publicvoidactionPerformed(ActionEvente) {
//"新建"
if(e、getSource()==newItem)
{
t1、setText("");
;
}
//"打开"
if(e、getSource()==openItem)
{
if()
(file);
intm=(TextFrame、this);
if(m==J)
{
();
openFile();
}
}
//"保存"
if(e、getSource()==saveItem) {
d=t1、getText();
if()(file);//显示保存对话框intm=(TextFrame、this);
if(m==J)
{
();
saveFile();
}
}
//"退出"
if(e、getSource()==exitItem)
{
k=t1、getText();//如果文本为空或已保存,直接退出,否则保存后退出
if(k、equals(""))System、exit(0);
elseif(k、equals(d))System、exit(0);
else
{
TextFramef=newTextFrame();//新建确认型对话框
intn=JOptionPane、showConfirmDialog(
f,"就是否将文件保存到当前位置?",
"退出",JOptionPane、YES_NO_CANCEL_OPTION);
if(n==JOptionPane、YES_OPTION)//如果选择“就是”,则保存文件{
if()(file);
intm=(TextFrame、this);
if(m==J)
{
();
saveFile();
}
}
if(n==JOptionPane、NO_OPTION)
{
System、exit(0);
}
}
}
}
voidopenFile()//打开的方法
{
try
{
fr=new(file);//类用于读取字符流
intlen=(int)();
char[]buffer=newchar[len];//以file的字符数开辟一段缓冲区
fr、read(buffer,0,len);//将fr从file中读取的字符读入数组buffer中的某一部分,
fr、close();//关闭该流
t1、setText(newString(buffer));
}
catch(Exceptione)//抛出异常
{e、printStackTrace();}
}
voidsaveFile()//保存的方法
{
try
{
fw=new(file);//类用于写入字符流
fw、write(t1、getText());//将t1里的内容写入file
fw、close();//关闭该流
}
catch(Exceptione)
{e、printStackTrace();}
}}privateclassLogoutActionextendsWindowAdapter//实现点击窗口退出事件监听器
{
publicvoidwindowClosing(WindowEvente)
{
s=t1、getText();
if(s、equals(""))System、exit(0);
elseif(s、equals(d))System、exit(0);
else{
TextFramef=newTextFrame();//新建确认型对话框
intn=JOptionPane、showConfirmDialog(
f,"就是否将文件保存到当前位置?",
"退出",JOptionPane、YES_NO_OPTION);
if(n==JOptionPane、YES_OPTION)//如果选择“就是”,则保存文件{
if()(file);
intm=(TextFrame、this);
if(m==J)
{
saveFile();
}
}
if(n==JOptionPane、NO_OPTION)
{
System、exit(0);}
}
}
voidsaveFile()//保存的方法
{
try
{
fw=new(file);//类用于写入字符流
fw、write(t1、getText());//将t1里的内容写入file fw、close();//关闭该流
}
catch(Exceptione)
{e、printStackTrace();}
}privateclassEditListenerimplementsActionListener{ publicvoidactionPerformed(ActionEvente)
{
//剪切
if(e、getSource()==cutItem||e、getSource()==cutItemPop)
{
t1、cut();
}
//复制
if(e、getSource()==copyItem||e、getSource()==copyItemPop) {
t1、copy();
}
//粘贴
if(e、getSource()==pasteItem||e、getSource()==pasteItemPop) {
t1、paste();
}
//删除
if(e、getSource()==deleteItem||e、getSource()==deleteItemPop) {
text=t1、getText();
selected=t1、getSelectedText();
intid=text、indexOf(selected);
intstart=id+selected、length();
intend=text、length();
Stringrest=text、substring(start,end);
t1、replaceRange(rest,id,end);
inta=id;
}
//全选
if(e、getSource()==selectAllItem||e、
getSource()==selectAllItemPop)
{
t1、selectAll();
}
}
}
privateclassFormatListenerimplementsItemListener
//若用此类作监听器,要用addItemListener方法注册监听器
{
publicvoiditemStateChanged(ItemEvente)
{
//设置字体风格(复选)
int
style=0;
if(styles[0]、isSelected())
style+=Font、BOLD;
if(styles[1]、isSelected())
style+=Font、ITALIC;
t1、setFont(newFont(t1、getFont()、getName(),style,t1、getFont()、getSize()));
//设置字体
for(inti=0;i<fonts、length;i++)
if(e、getSource()==fonts[i])
t1、setFont(newFont(fontNames[i],style,t1、getFont()、getSize()));
//设置字体大小
for(intj=0;j<sizes、length;j++)
if(e、getSource()==sizes[j])
t1、setFont(newFont(t1、getFont()、getName(),style,5*j));
//设置字体颜色
if(e、getSource()==colors[0])
t1、setForeground(Color、black);
if(e、getSource()==colors[1])
t1、setForeground(Color、red);
if(e、getSource()==colors[2])
t1、setForeground(Color、blue);
if(e、getSource()==colors[3])
t1、setForeground(Color、green);
if(e、getSource()==colors[4])
t1、setForeground(Color、white);
if(e、getSource()==colors[5])
t1、setForeground(Color、yellow);
if(e、getSource()==colors[6])
t1、setForeground(Color、pink);
}
}
privateclassViewListenerimplementsActionListener
{
publicvoidactionPerformed(ActionEvente)
{
//关于主题
if(e、getSource()==formItem)
{
JOptionPane、showMessageDialog(null,"闫曦
王鑫
冯爽","成员机构",JOptionPane、INFORMATION_MESSAGE); }
//关于本产品
if(e、getSource()==impressionItem)
{
JOptionPane、showMessageDialog(null,"经过半个多学期的学习,"+"\n"+"我们队java有了一些了解,"
+"\n"+"并伴有极大的兴趣"+"\n"+"也对软件的瞧法有所改观。
"+"\n"+"感谢老师的教导,"+"\n"+
"同时也希望我们能编出一些新的"+"\n"+"软件,为社会做出应有的贡献",
"学习感言",JOptionPane、INFORMATION_MESSAGE);
}
}
}
J;
JTextAreat1;
JScrollPanescrollPane;
JMenuBarmenuBar;//菜单栏
JPopupMenupopup;//弹出式菜单
JMenu
文件,编辑,格式,查瞧
JMenuItemnewItem,openItem,saveItem,exitItem,//新建,打开,保存,打印,退出
cutItem,copyItem,pasteItem,deleteItem,selectAllItem,//剪切,复制,粘贴,删除,全选
cutItemPop,copyItemPop,pasteItemPop,deleteItemPop,selectAllI temPop,//剪切,复制,粘贴,保存,删除,全选
sizeItem,fontItem,styleItem,colorItem,//字体大小,字体,字体风格,颜色
formItem,impressionItem;//关于我们
privateJCheckBoxMenuItemstyles[];
privateJRadioButtonMenuItemsizes[],colors[],fonts[];
privateButtonGroupsizeGroup,colorGroup,fontGroup,styleGroup; }、4.文本编辑器运行界面
(11)
文件等原件放入菜单栏
(22)
引入对话框intm=(TextFrame、this);
(33)
出现一个对话框来判断就是否退出
//如果文本为空或已保存,直接退出,否则保存后退出if(k、
equals(""))System、exit(0);
elseif(k、equals(d))System、exit(0);else
TextFramef=newTextFrame();//新建确认型对话框
intn=JOptionPane、showConfirmDialog(
f,"就是否将文件保存到当前位置?",
"退出",JOptionPane、YES_NO_CANCEL_OPTION);
if(n==JOptionPane、YES_OPTION)//如果选择“就是”,则保存文件{
if()(file);
intm=(TextFrame、this);if(m==J)
{
();
saveFile();
}
}
if(n==JOptionPane、NO_OPTION)
{
System、exit(0);
}
}
(44)
JOptionPane、YES_NO_CANCEL_OPTION
这句话决定有几个选项
(55)
设置单选框与复选框,,形式不太相同
//格式
format=newJMenu("格式(O)");
format、setMnemonic("O");
sizeItem=newJMenu("字体大小");
colorItem=newJMenu("字体颜色");
fontItem=newJMenu("字体");
styleItem=newJMenu("字体风格");
sizes=newJRadioButtonMenuItem[sizeNames、length]; colors=newJRadioButtonMenuItem[colorNames、length]; fonts=newJRadioButtonMenuItem[fontNames、length]; styles=newJCheckBoxMenuItem[styleNames、length]; styleGroup=newButtonGroup();
fontGroup=newButtonGroup();
colorGroup=newButtonGroup();
sizeGroup=newButtonGroup();
(66)
不存在判断,,息只就是需要确认信息eJOptionPane、INFORMATION_MESSAGE
//查瞧
view=newJMenu("关于我们(us)");
view、setMnemonic("U");
formItem=newJMenuItem("组成成员");
formItem、addActionListener(newViewListener());
impressionItem=newJMenuItem("学习感言");
impressionItem、addActionListener(newViewListener());
view、add(formItem);
view、add(impressionItem);//关于主题
if(e、getSource()==formItem)
{
JOptionPane、showMessageDialog(null,"闫曦
王鑫
冯爽","成员机构",JOptionPane、INFORMATION_MESSAGE);
}
//关于本产品
if(e、getSource()==impressionItem)
{
JOptionPane、showMessageDialog(null,"经过半个多学期的学习,"+"\n"+"我们队java有了一些了解,"
+"\n"+"并伴有极大的兴趣"+"\n"+"也对软件的瞧法有所改观。
"+"\n"+"感谢老师的教导,"+"\n"+
"同时也希望我们能编出一些新的"+"\n"+"软件,为社会做出应有的贡献","学习感言",JOptionPane、INFORMATION_MESSAGE);
}
(77)
编辑框的实现
//编辑
edit=newJMenu("编辑(E)");
edit、setMnemonic("E");
//创建菜单项
cutItem=newJMenuItem("剪切(T)");
copyItem=newJMenuItem("复制(C)");
pasteItem=newJMenuItem("粘贴(P)");
deleteItem=newJMenuItem("删除(L)");
selectAllItem=newJMenuItem("全选(A)");
//加速器
cutItem、setAccelerator(KeyStroke、getKeyStroke(KeyEvent、
VK_X,InputEvent、CTRL_MASK));
copyItem、setAccelerator(KeyStroke、getKeyStroke(KeyEvent、
VK_C,InputEvent、CTRL_MASK));
pasteItem、setAccelerator(KeyStroke、getKeyStroke(KeyEvent、VK_V,InputEvent、CTRL_MASK));
deleteItem、setAccelerator(KeyStroke、getKeyStroke(KeyEvent、VK_L,InputEvent、CTRL_MASK));
selectAllItem、setAccelerator(KeyStroke、
getKeyStroke(KeyEvent、VK_A,InputEvent、CTRL_MASK));
//监听器
cutItem、addActionListener(newEditListener());
copyItem、addActionListener(newEditListener());
pasteItem、addActionListener(newEditListener());
deleteItem、addActionListener(newEditListener());
selectAllItem、addActionListener(newEditListener());
//添加
edit、add(cutItem);
edit、add(copyItem);
edit、add(pasteItem);
edit、add(deleteItem);
edit、add(selectAllItem);
(8)
弹出式菜单的实现
//弹出式菜单及其菜单项
popup=newJPopupMenu();
cutItemPop=newJMenuItem("剪切(T)");
cutItemPop、addActionListener(newEditListener()); copyItemPop=newJMenuItem("复制(C)");
copyItemPop、addActionListener(newEditListener()); pasteItemPop=newJMenuItem("粘贴(P)");
pasteItemPop、addActionListener(newEditListener()); deleteItemPop=newJMenuItem("删除(L)");
deleteItemPop、addActionListener(newEditListener()); selectAllItemPop=newJMenuItem("全选(A)"); selectAllItemPop、addActionListener(newEditListener());
//添加
popup、add(cutItemPop);
popup、add(copyItemPop);
popup、add(pasteItemPop);
popup、add(deleteItemPop);
popup、add(selectAllItemPop);
//实现弹出式菜单的弹出触发器
t1、addMouseListener(newMouseAdapter()
{
publicvoidmouseReleased(MouseEvente)
{
if(e、isPopupTrigger())
}
}
六、、程序流程图❶计算器
❷文本编辑器
七、、心得体会转眼间半个学期的java课程都学完了,从起初对Java的一无所知,到如今可以编写很多Java程序,整个过程中对Java颇有感受。
在前十周中我们学习了有关Java的一些简单知识,但就是感觉一头雾水,不知其然,当然也更不知其所以然,本次就是我第一次使用JAVA来
编写我认为使用的程序,感觉很就是不一样,虽然不能说精通,但可以自豪
的说:我们知其然。
这也使得我萌生一个想法:如果java考试能在课程设
计与java实验之后考,我想我的成绩会更好一些。
这三周的上机也我们有
了更多的实地操作经验。
在这次实验中,我意识到无论多么复杂的程序都就是要用许多简单的
程序组合而成,不要小瞧一个面板的设置,面板也可以分为很多种,就比如TextPanel、ButtonPanel等等都有不同的用处,而且还要排版,这就是我
们就需要从课外学习一些新的知识来使面板的布局更加美观、更加人性化。
没有一个程序就是在我们没有思考就能做出来的,当然没有一道题就是在
我们思考就是讨论之后还做不出来的。
当然这也要结合我们的实际情况。
我们组虽然做的不如有的人好,界面不就是足够美观,功能不就是足够强大,但就是我们在这之前就确定一个中心思想:充分运用书本知识。
所以在我
们的程序中绝大多数代码都可以在书中找到。
不过有些方法就是我们力所
不能及的,比如GridLayout的布局,从外面流入一个对话框等等。
当然我
们的方法并不高级,以至于不就是很美观,但就是却就是我们积极的从课外
书中找到的。
在这三周的学习中我们从一开始的各自做各自的到后来的积极讨论,
积极向老师同学请教。
平心而论,这确实就是一个好方法,正所谓“听君一
席话,胜读十年书”,这要比自己从书中苦苦寻求答案要快得多,也记的更牢。
我们在做完自己的作品后也会去瞧瞧别人的代码,瞧瞧与自己有什么
不同,或者自己有什么地方比别人繁琐,有一个地方我印象很深刻,就就是
剪切复制等方法的实现只需要设置cut()、copy()等,而不需要再写关于
选定区域的方法://剪切
if(e、getSource()==cutItem||e、getSource()==cutItemPop)
{
text=t1、getText();
selected=t1、getSelectedText();
a=text、indexOf(selected);;
t1、cut();
f=1;
}}
当然像这样的大大小小的改动就是必须的,我们也乐此不疲。
一次次的为自己的一个收获而欢呼雀跃。
通过这次实验课程,我也添加了不少自信。
最开始学这本书的时候,很多朋友跟我说:“数学不好就是学不好这些的!”我听了相当恐惧,因为文化课中我最差劲的科目就就是数学。
但就是当我坚持到现在,我想我可以完全否定这句话,没有人可以给自己下定论,没有人可以说自己学不好或做不好什么,只要下了功夫,只要勤加练习,总会成功的。
所以今后的课程,我会抱着更大的自信与更谨慎的态度去学习。
Java这本书,对我来说,就是走进编程世界的第一个起点,它对我至关重要,从中我了解了编程人员的辛苦,同时也建立的不少的信心,我希望在未来的学习过程中,一直用学习这本书时候的态度作为一个衡量的尺度,还就是那句老话“勤能补拙”。
就像在第一题中,我们就针对面板采取了很多方案,有时候都想过要偷懒,就比如BorderLayout这个布局管理器的按钮大小就是根据按钮里面内容的多少而确定的,并不能实现充分利用文本域。
我们就在想可不可以将每个按钮中的内容都填成个位数或者就是两位
数,这样就可以投机取巧用一个简单的代码完成复杂的程序,但问题出现啦,当文本框拉长之后就走型了,于就是我们又在想把文本框的大小固定了老
师就瞧不出来啦。
虽然这方法很好,但终究不就是一个长远之计。
最终我
饿美女还就是用了GridLayout来规定几行几列,这样就无懈可击啦!这个代码的发现也让我们信心增进不少,让那个我们感觉到其实java的代码并不深奥,只要我们愿意去寻找与发现它们,就不困难。
而第二个实验较之第一个实验而言难度有所增加,但绝非我们力所不
能及的,完全没有必要抄袭别人的方法,实验课也极度的使我的自信心膨胀,让我感觉到java并不就是可望而不可即的,我们完全有能力驾驭它。
相信之后我能自己编出更多有用的程序来充实自己。
我还有很多东西要学,越就是学习我越就是觉得自己懂的东西太少。
不过,好在我已经意识到了,接下来就就是努力,努力再努力!最后也祝各
位合肥工业大学的辅导老师们身体健康,工作顺利!。