版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/课程设计设计题目:JAVA语言编写计算器和文档编辑器学生姓名:李伟学号:20095378专业班级:电子商务09-1班指导教师:聂会星程八一惠刚靳鹏方芳2010年12月12日计算器制作一、实验目的1、为了加深对课堂讲授内容的理解,掌握解决实际应用问题时所应具有的查阅资料、技术标准和规范,以与软件编程、调试等能力,掌握面向对象的编程思想与Java语言程序设计的规律与技巧,为进一步学习Java高级应用与今后从事专业工作打下基础。2、在对Java程序的调试过程中,提高分析程序中出现的错误和排除这些错误的能力。通过上机实践,加深学生对计算机软件运行环境,以与对操作系统与计算机语言支持系统相互关系的了解。3、熟悉Java开发工具,运行java应用程序和小程序;掌握Java程序的编辑、编译、运行。掌握各种数据类型与其使用方法;掌握表达式的组成;理解定义变量的作用,掌握定义变量的方法;掌握各种运算符的使用与其优先级控制。学习结构化程序设计的分支结构与分支语句的使用;学习使用结构化程序设计的循环结构与循环语句的使用;掌握数组的使用方法,着重掌握二维数组,编写使用二维数组的程序;掌握常用字符串类、方法。4、学会类的定义和对象的使用;封装、继承、多态的应用;如何创建包,编译、运行包中的类;方法的覆盖和重载;抽象类、接口、内部类的使用。掌握异常处理的使用方法。着重掌握基本的GUI组件;掌握容器布局管理;掌握事件处理机制。二、实验要求计算器要有GUI界面,用户可以输入所需计算的数值,可以进行加、减、乘、除四种最基本的运算,可以求一个数值的平方与倒数,可以进行阶乘运算,要能运算小数,并且不会产生精度损失,在必要情况下,可以进行四舍五入的运算。允许正负数间的运算。三、实验内容通过创建一个框架并在框架上加上适当的按钮以与文本框并通过对按钮设置监听器以达到进行运算的目的,由于对java知识掌握的不多还需要通过参阅书本来完成,我们小组有三个人,我负责做算法部分,其他两人负责界面布局以与监听器的设置。在实验过程中,我们共同合作每个人都参加了所有程序的编写过程。四、实验步骤1、首先要声明包。主要用到了以下几个包:importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;导入了包之后就可以运用包中的类了。2、创建框架。以下用BorderFrame类构造frame函数,然后设置框架的格式为最小化、最大化、关闭。然后show的作用是显示该框架。BorderFrameframe=newBorderFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.show();3、编写BorderFrame类,定义各个变量。classBorderFrameextendsJFrameimplementsActionListener这里要用到ActionListener接口,是下面监听器所需要的。定义变量例如下面代码:privateJButtonnum0,dao,gen,ss,bac;publicdoubled,d11;publicdoublejieguo;publicbooleanend=true;而在实际编写过程中我是用到一个定义一个。4、定义各组件,在框架上加入各种组件。接下来是定义按钮num0=newJButton("0");括号里的即为按钮显示的信息。依次再创建23个按钮。刚开始在BorderFrame()方法里我使用JButtonnum0=newJButton("0")来定义按钮,后来发现在actionPerformed方法里不能使用这些按钮,所以要在BorderFrame这个类中定义,JButtonnum0;这样就能被BorderFrame类里的所有方法采用而不会出现未定义的错误。在布局的时候为了防止颜色单调,将按钮背景颜色设置为白色,采用setBackground()方法,具体代码如下:num0.setBackground(Color.white);这样依次设置12个按钮,其他按钮仍为默认颜色。接着创建buttons面板方法如下:buttons=newJPanel();接着把所有的按钮加到buttons面板程序代码如下:buttons.add(num0);然后依次把所有按钮加入即可。在布局的时候采用了setLayout方式布局具体代码如下:buttons.setLayout(newGridLayout(6,4,5,5));后面的四个数分别是6行4列,间隙的高5宽5。这样之后布局如下接着编写文本框并将文本域设置为不可编辑,代码如下resultText=newJTextField("",25);resultText.setEnabled(false);然后将文本域加入到text面板中具体代码如下:JPaneltext=newJPanel();text.add(resultText);之后再将面板加入到内容窗格布局中具体代码如下:ContainercontentPane=getContentPane();contentPane.add(text,BorderLayout.NORTH);contentPane.add(buttons,BorderLayout.CENTER);在计算器制作过程中为了使界面更加人性化,并为使用者提供一些制作信息我们小组特意加入了菜单栏。首先创建菜单栏并将菜单栏加入到框架中具体代码如下:JMenuBarmainMenu=newJMenuBar();setJMenuBar(mainMenu);接着创建三个主菜单名字分别为文件、颜色、作者具体代码如下:JMenuactMenu=newJMenu("文件");JMenusetColorMenu=newJMenu("颜色");JMenuaboutMenu=newJMenu("作者");mainMenu.add(actMenu);mainMenu.add(setColorMenu);mainMenu.add(aboutMenu);接下来分别向各个主菜单中加入子菜单具体代码如下tuichu=newJMenuItem("退出");actMenu.add(tuichu);banquan=newJMenuItem("版权");aboutMenu.add(banquan);chanpin=newJMenuItem("产品信息");aboutMenu.add(chanpin);hongse=newJMenuItem("红色");setColorMenu.add(hongse);lanse=newJMenuItem("蓝色");setColorMenu.add(lanse);huise=newJMenuItem("灰色");setColorMenu.add(huise);菜单显示如下图所示:5、创建监听器每个按钮都是事件源,我们对按钮设置监听器后,只要该按钮发生一个事件(ActionEvent),listenter对象就是接到通知。我们设置监听器的方法如下所示:num9.addActionListener(this);num8.addActionListener(this);num7.addActionListener(this);num6.addActionListener(this);num5.addActionListener(this);num4.addActionListener(this);num3.addActionListener(this);num2.addActionListener(this);num1.addActionListener(this);num0.addActionListener(this);plu.addActionListener(this);min.addActionListener(this);mul.addActionListener(this);div.addActionListener(this);equ.addActionListener(this);cle.addActionListener(this);jiecheng.addActionListener(this);youk.addActionListener(this);dian.addActionListener(this);zf.addActionListener(this);dao.addActionListener(this);gen.addActionListener(this);ss.addActionListener(this);bac.addActionListener(this);在这里,所有的按钮共享一个监听器对象。所以在actionPerformed方法中,必须判断那个按钮被按下,即事件源,可以通过EventObject类的getSource方法来判断。接着对菜单也设置了监听器如下:banquan.addActionListener(this);zhizuodi.addActionListener(this);hongse.addActionListener(this);lanse.addActionListener(this);huise.addActionListener(this);tuichu.addActionListener(this);chanpin.addActionListener(this);这样所有的监听器就制作好了。6、编写actionPerformed方法在actionPerformed方法里包括了所有按钮以与子菜单的点击事件,包括了所有的算法。首先设置点banqun菜单后,将会弹出一个showConfirmDialo型对话框,里面的按钮是DEFAULT_OPTION类型,标题是“版权雷神牌计算器”,对话框里的内容是"刘晓雷20095406;李伟20095378;周洪芬20095379"具体代码如下:if(source==banquan) { intselection=JOptionPane.showConfirmDialog( BorderFrame.this, "刘晓雷20095406;李伟20095378;周洪芬20095379","版权雷神牌计算器", JOptionPane.DEFAULT_OPTION); }接着编写chanpin菜单即作者信息的事件,当点击作者信息时会弹出如下对话框:当点击确定后会弹出另一个对话框如图:代码如下if(source==chanpin) { intselection=JOptionPane.showConfirmDialog( BorderFrame.this, "雷神出品必为精品","雷神牌计算器", JOptionPane.DEFAULT_OPTION); }if(source==chanpin) { intselection=JOptionPane.showConfirmDialog( BorderFrame.this, "谢谢使用","雷神牌计算器", JOptionPane.DEFAULT_OPTION); }可以看出就是将source判断两次是否等于chanpin,这样当第一个对话框执行完之后就会弹出第二个对话框以达到效果。接着设置tuichu菜单的事件,当点击退出时会出现如下对话框:如果点击了确定就会退出,点击了撤销就会回到原界面代码如下:if(source==tuichu) {intselection=JOptionPane.showConfirmDialog( BorderFrame.this, "确定退出么?","退出?", JOptionPane.OK_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE); if(selection==JOptionPane.OK_OPTION) { System.exit(5); } }System.exit(5)语句就是退出框架的意思,括号里的可以为任意值,消息类型为WARNING_MESSAGE可以看出与上面两个对话框不同的是对话框里有了警告的提示。设置完之后设置颜色菜单的事件如下:if(source==lanse) {buttons.setBackground(Color.blue); }if(source==hongse) {buttons.setBackground(Color.red); } if(source==huise) {buttons.setBackground(Color.lightGray); }setBackground就是设置背景颜色的函数,这样就达到了改变背景颜色的目的。 接下来就进入计算阶段的编写了,首先要达到点击数字按钮,文本框里会显示数字如下所示:if(source==num0){t=resultText.getText()+"0";resultText.setText(t);}if(source==num1){t=resultText.getText()+"1";resultText.setText(t);} if(source==num2){t=resultText.getText()+"2";resultText.setText(t);} if(source==num3){t=resultText.getText()+"3";resultText.setText(t);} if(source==num4){t=resultText.getText()+"4";resultText.setText(t);} if(source==num5){t=resultText.getText()+"5";resultText.setText(t);} if(source==num6){t=resultText.getText()+"6";resultText.setText(t);} if(source==num7){t=resultText.getText()+"7";resultText.setText(t);} if(source==num8){t=resultText.getText()+"8";resultText.setText(t);} if(source==num9){t=resultText.getText()+"9";resultText.setText(t);}resultText.getText()就是获取文本框中的字符串,resultText.setText(t)就是使文本框中显示字符串t;这样就可以在文本框中输入数字了如下图所示:7、我的算法。接下来进行算法的编写,算法编写主要是我编写的,这些算法不是一下子就能想出来的,而是一步步不断完善而成的,我相信如果有时间我会更加完善我的算法的。加法的代码如下:if(source==plu){if(z!=1){c5=1;c1=Double.parseDouble(resultText.getText().trim());end=false;z=0;}if(z==1){c5=1;c1=jieguo;z=0;}}这里z值就是判断变量用来判断=是否执行过的,end就是用来清空文本框的,c5就是控制变量用来判断是否执行过+运算。=的代码如下:if(source==equ){if(c10!=0){ jieguo=1;for(inti=1;i<=c9;i++)jieguo=i*jieguo;t=(""+jieguo);c10=0;}if(c5!=0.0){d=Double.parseDouble(resultText.getText().trim()); jieguo=c1+d;t=(""+jieguo);c5=0;}if(c6!=0.0){d=Double.parseDouble(resultText.getText().trim()); jieguo=c2-d;t=(""+jieguo);c6=0;}if(c7!=0.0){d=Double.parseDouble(resultText.getText().trim()); jieguo=c3*d;t=(""+jieguo);c7=0;}if(c8!=0.0){d=Double.parseDouble(resultText.getText().trim()); jieguo=c4/d;t=(""+jieguo);c8=0;}if(c12!=0.0){d=Double.parseDouble(resultText.getText().trim());jieguo=1;for(inti=1;i<=d;i++) jieguo=c11*jieguo;t=(""+jieguo);c12=0;}end=false;resultText.setText(t);z=1;}其中从c5到c8还有c10都是控制变量用来判断带年纪过哪一个运算符。用一个加法来讲解我的流程,点击顺序9+72=+3=首先点击9这个按钮,接着文本框中就会显示9,点击+后因为z初值为零,所以就获取了文本框中的数值c1=9,然后控制变量c5=1,end=false。文本框中仍然显示着9。接着进行下一个循环,当点击按钮时下一个循环才会进行也就是说看不到清零过程,点7按钮,接着有一个end=true语句,然后点击2文本框中显示72,然后点击=号,此时执行if语句中的c5!=0,d=72,结果=81,end=false,z=0,显示81,当点击+时,c1=jieguo即81,end=false,点击3继续清零,文本框中显示3,点=,结果就是84。还有一些其他的运算都很简单,详见源代码。这样就完成了计算器的编写。五、实验结果输入5.2执行四舍五入运算求9+72+3结果点击9+72=+3=点击9,点击完+号后:接着点击7点击2点击=接着点击+3点击加号的时候会出现清零过程,接着点击=这样就完成了运算结果,点击四舍五入按钮后如下:文本编辑器一、实验目的:综合掌握Java编程技巧与Java开发环境。二、实验要求:可以设置文本的字体、大小、颜色等基本参数,可以读取计算机中TXT文件,可以生成一个新的TXT文件。其他功能参照windows的文本编辑器。三、实验内容通过创建一个框架并在框架上加上适当的菜单栏以与文本域并通过对菜单设置监听器以达到进行字体大小颜色的控制,由于对java知识掌握的不多还需要通过参阅书本来完成,我们小组有三个人,我负责做算法部分,其他两人负责界面布局以与监听器的设置。在实验过程中,我们共同合作每个人都参加了所有程序的编写过程。四、实验步骤1、声明包importjava.awt.font.*;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjava.io.*;其中java.io是提供输入流输出流控制。2、创建框架。以下用ListFrame类构造frame函数,然后设置框架的格式为最小化、最大化、关闭。然后show的作用是显示该框架。 ListFrameframe=newListFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.show();3、编写ListFrame类,定义各个变量。classListFrameextendsJFrameimplementsActionListener这里要用到ActionListener接口,是下面监听器所需要的。定义并初始化如下:public Stringdax[]={"5","10","15","20","25","30","35","40","..."};定义列表框并初始化:publicJComboBoxbox=newJComboBox(dax); publicstaticfinalintWIDTH=500; publicstaticfinalintHEIGHT=450; publicstaticfinalStringcheckedLabel="Youchoosed:\nIndex,Course\n";publicStringt=null; publicJTextAreamyTextArea; privateJListcourseList; privateJPanellistPanel; Dialogtanchu=newDialog(this); publicButtonque=newButton("确定");publicJCheckBoxMenuItemtoolItem,statusItem; JLabeltishi=newJLabel("字体大小:"); publicJMenuItemjianqie,niantie,fuzhi,banquan,hongse,lanse,huise,heise,tuichu,chengse,luse,shezhi,xinxi;publicJMenuItemzhizuodi,songti,heiti,kaiti,lishu,youyuan,dakai,baocun,lingcun,item11,item12,item13; open=new(this,"打开.."); save=new(this,"另存为..",); intshifulingcun; JPopupMenumenu;而在实际编写过程中我是用到一个定义一个,而不是一起定义的。4、定义各组件,在框架上加入各种组件。创建文本域,并将文本域加入到滚动条中,创建面板,并将带有文本域的滚动条加入到面板中,具体代码如下: ContainercontentPane=getContentPane(); JPaneltextPanel=newJPanel(); myTextArea=newJTextArea(21,43); JScrollPanetextScrollPane=newJScrollPane(myTextArea); textPanel.add(textScrollPane); contentPane.add(textPanel);创建菜单栏,并创建四个主菜单,分别为四个主菜单设置快捷键 JMenuBarmainMenu=newJMenuBar();setJMenuBar(mainMenu);JMenuactMenu=newJMenu("文件(A)");JMenubianMenu=newJMenu("编辑(B)");JMenusetColorMenu=newJMenu("颜色(S)");JMenuaboutMenu=newJMenu("作者(C)");JMenudaxMenu=newJMenu("大小(D)");JMenuzitMenu=newJMenu("字体(E)");actMenu.setMnemonic('A'); bianMenu.setMnemonic('B'); setColorMenu.setMnemonic('S'); aboutMenu.setMnemonic('C'); daxMenu.setMnemonic('D'); zitMenu.setMnemonic('E');定义子菜单并将子菜单加入到主菜单中并设置加速器: dakai=newJMenuItem("打开(L)");actMenu.add(dakai); dakai.setAccelerator(KeyStroke.getKeyStroke( KeyEvent.VK_L,InputEvent.CTRL_MASK));lingcun=newJMenuItem("另存为(Y)");这个的加速器是Ctrl+L当按下 Ctrl+L时就是点击了该子菜单。 actMenu.add(lingcun); 创建单选框并将单选框加入到子菜单中:toolItem=newJCheckBoxMenuItem("自动换行"); statusItem=newJCheckBoxMenuItem("取消自动"); ButtonGroupgroup=newButtonGroup(); group.add(toolItem); group.add(statusItem); optionMenu.add(toolItem); optionMenu.add(statusItem); bianMenu.add(optionMenu);还有其他的许多子菜单的定义方法如上详见源代码。定义三个子菜单和一个弹出式菜单,将三个子菜单加入到弹出菜单中item11=newJMenuItem("复制");item12=newJMenuItem("粘贴");item13=newJMenuItem("剪切");menu=newJPopupMenu();menu.add(item11);menu.add(item12);menu.add(item13);5、设置鼠标右键当点击鼠标右键时弹出菜单: myTextArea.addMouseListener(newMouseAdapter(){publicvoidmousePressed(MouseEvente){if(e.getModifiers()==InputEvent.BUTTON3_MASK)menu.show(myTextArea,e.getX(),e.getY());}});6、设置监听器每个按钮都是事件源,我们对按钮设置监听器后,只要该按钮发生一个事件(ActionEvent),listenter对象就是接到通知。我们设置监听器的方法如下所示:lingcun.addActionListener(this); baocun.addActionListener(this);tuichu.addActionListener(this); dakai.addActionListener(this); banquan.addActionListener(this);xinxi.addActionListener(this); zhizuodi.addActionListener(this); hongse.addActionListener(this); lanse.addActionListener(this); huise.addActionListener(this); heise.addActionListener(this); chengse.addActionListener(this); luse.addActionListener(this); zitMenu.addActionListener(this); songti.addActionListener(this);heiti.addActionListener(this);kaiti.addActionListener(this); lishu.addActionListener(this);youyuan.addActionListener(this);daxMenu.addActionListener(this);shezhi.addActionListener(this);jianqie.addActionListener(this);niantie.addActionListener(this);fuzhi.addActionListener(this);在这里,所有的按钮共享一个监听器对象。所以在actionPerformed方法中,必须判断那个按钮被按下,即事件源,可以通过EventObject类的getSource方法来判断。接着对弹出菜单里的子菜单设置监听器:item11.addActionListener(this);item12.addActionListener(this);item13.addActionListener(this);7、设置作者菜单里的子菜单的点击事件。当点击版权子菜单时,先弹出制作人信息,关闭对话框后,接着弹出感谢提示if(source==banquan) { intselection=JOptionPane.showConfirmDialog( ListFrame.this, "刘晓雷20095406;李伟20095378;周洪芬20095379","版权", JOptionPane.DEFAULT_OPTION); }if(source==banquan) { intselection=JOptionPane.showConfirmDialog( ListFrame.this, "感谢观看","版权", JOptionPane.DEFAULT_OPTION); }当点击信息时,弹出提示产品信息对话框,代码如下:if(source==xinxi){ intselection=JOptionPane.showConfirmDialog( ListFrame.this, "雷神牌记事本\n雷神出品必为精品","产品信息", JOptionPane.DEFAULT_OPTION); }当点击zhizuodi时会提示制作地信息,具体代码如下:if(source==zhizuodi){ intselection=JOptionPane.showConfirmDialog( ListFrame.this, "合肥工业大学机房","地址", JOptionPane.DEFAULT_OPTION); }8、设置编辑菜单里的子菜单。首先设置两个单选框,这里要用到自动换行的函数.setLineWrap(true)就是自动换行,当参数改成false时就不能自动换行了。具体代码如下: if(source==toolItem) { myTextArea.setLineWrap(true); }if(source==statusItem) { myTextArea.setLineWrap(false); }接着设置剪切,复制粘贴子菜单要用到.cut().copy().paste()函数,具体代码如下: if(source==jianqie) {myTextArea.cut();} if(source==fuzhi) {myTextArea.copy();} if(source==niantie) {myTextArea.paste(); }9、设置颜色菜单的下拉菜单这里要用到.setForeground()函数,当设置完之后字的颜色就是后面参数里的颜色。 if(source==hongse) { myTextArea.setForeground(Color.red);} if(source==lanse) { myTextArea.setForeground(Color.blue);} if(source==huise) { myTextArea.setForeground(Color.gray);} if(source==chengse) { myTextArea.setForeground(Color.orange);} if(source==luse) { myTextArea.setForeground(Color.green);} if(source==heise) { myTextArea.setForeground(Color.black);}10、设置字体菜单的下拉菜单。这里一共设置了五种字体,首先设置字体要用获得文本域中的格式用Fontf=myTextArea.getFont();就可以获得,然后在设置字体格式时只改变字体其他就可以用f.getStyle(),f.getSize())来表示。具体代码如下: if(source==songti) { Fontf=myTextArea.getFont(); myTextArea.setFont(newFont("宋体",f.getStyle(),f.getSize())); } if(source==heiti) { Fontf=myTextArea.getFont(); myTextArea.setFont(newFont("黑体",f.getStyle(),f.getSize())); } if(source==kaiti) { Fontf=myTextArea.getFont(); myTextArea.setFont(newFont("楷体",f.getStyle(),f.getSize())); } if(source==lishu) { Fontf=myTextArea.getFont(); myTextArea.setFont(newFont("隶书",f.getStyle(),f.getSize())); } if(source==youyuan) { Fontf=myTextArea.getFont(); myTextArea.setFont(newFont("幼圆",f.getStyle(),f.getSize())); }11、设置文件下拉菜单里的功能。当点击退出时会弹出OK_CANCEL_OPTION形式的对话框,如果选择的是ok就会退出框架,用到了System.exit(0)函数。具体代码如下。if(source==tuichu) {intselection=JOptionPane.showConfirmDialog( ListFrame.this, "确定退出么?","退出?", JOptionPane.OK_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE); if(selection==JOptionPane.OK_OPTION) { System.exit(0); }}12、设置打开文件菜单。在前面定义的时候用到过open=new(this,"打开..");这个就是设置打开的对话框,标题为打开,右面的按钮默认为打开。这里用到了输入流和.read函数。用到了try语句防止出错。open.getDirectory()+open.getFile()是获取文件名称类型内容。if(source==dakai) {open.setVisible(true); Stringname=open.getDirectory()+open.getFile(); try { laiyuan=new(name); byte[]duqu=newbyte[laiyuan.available()]; laiyuan.read(duqu); myTextArea.setText(newString(duqu)); laiyuan.close(); } catch(IOExceptiona) { System.err.println("打开文件失败"); } }13、设置保存和另存为功能。 在前面曾经定义过save=new(this,"另存为..",);意思是一个标题为另存为的对话框,右下方的按钮是保存。这里用到了输出流。和try语句纠错功能。在保存里有一个变量shifulingcun,如果曾经执行过另存为,那么变量值为1,否则为默认值0,在执行保存的时候就判断是否执行过另存为,如果执行过另存为就不执行save.setVisible(true);语句,即不显示弹出的框架,直接默认保存。具体语句如下: if(source==lingcun) { save.setVisible(true); Stringname=save.getDirectory()+save.getFile(); try { OutputStreamout=new(name); out.write(myTextArea.getText().getBytes()); out.close(); } catch(IOExceptionb) { System.err.println("打开文件失败"); } shifulingcun=1; } if(source==baocun) { if(shifulingcun!=1) {save.setVisible(true);}shifulingcun=1; Stringname=save.getDirectory()+save.getFile(); try { out=new(name); out.write(myTextArea.getText().getBytes()); out.close(); } catch(IOExceptionb) { System.err.println("打开文件失败"); }}14、编写字体大小里的弹出框架。在前面曾经定义过Dialog框架,这里就是我们所用到的,我在框架上加入组合框标签以与按钮组建通过这些来设置字体大小,与前面直接在子菜单里设置的不同,其中组合框以与按钮的监听器设置与以前有所不同,在监听器设置的时候直接加入了方法。具体代码如下:下面是对组合框以与其中显示的内容设置的点击事件,下拉列表里共用一个监听器就是box的监听器具体代码如下: box.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente) { Objectss=box.getSelectedItem(); Stringtr=(String)ss; if(tr=="5"){ Fontf=myTextArea.getFont(); myTextArea.setFont(newFont(f.getName(),f.getStyle(),5));} if(tr=="10"){ Fontf=myTextArea.getFont(); myTextArea.setFont(newFont(f.getName(),f.getStyle(),10)); } if(tr=="15"){ Fontf=myTextArea.getFont(); myTextArea.setFont(newFont(f.getName(),f.getStyle(),15)); } if(tr=="20"){ Fontf=myTextArea.getFont(); myTextArea.setFont(newFont(f.getName(),f.getStyle(),20)); } if(tr=="25"){ Fontf=myTextArea.getFont(); myTextArea.setFont(newFont(f.getName(),f.getStyle(),25));} if(tr=="30"){ Fontf=myTextArea.getFont(); myTextArea.setFont(newFont(f.getName(),f.getStyle(),30)); } if(tr=="35"){ Fontf=myTextArea.getFont(); myTextArea.setFont(newFont(f.getName(),f.getStyle(),35)); } if(tr=="40"){ Fontf=myTextArea.getFont(); myTextArea.setFont(newFont(f.getName(),f.getStyle(),40)); } }}); 设置组合框不可编辑,并设置标签的字体格式等。 box.setEditable(false); tishi.setFont(newFont("华文行楷",1,15)); 设置que按钮的监听器具体代码如下:que.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente) { tanchu.dispose(); }}); 设置shezhi菜单,当点击设置菜单时就设置对话框的大小标题向其中加入各组件,具体代码如下: if(source==shezhi){ tanchu.setLocation(300,250); tanchu.setSize(200,150); tanchu.setTitle("字体设置"); tanchu.setLayout(newGridLayout(2,2,2,2)); tanchu.add(tishi); tanchu.add(box); tanchu.add(que); tanchu.setVisible(true);} }这样就完成了文本编辑器的编辑》五、实验结果执行完程序后出现界面如下(由于界面太大下面是缩小版):点击大小菜单里的设置弹出如下对话框:输入“文本编辑器”对其设置结果如图点击文件菜单里的打开出现如下对话框打开一个文件点击编辑里的自动换行:点击作者里的版权实验体会:这次试验是我们通过团体合作来完成的,我做的是监听器部分,刚开始我还不知道如何设置监听器设置了监听器之后如何反应,最后通过实验我终于掌握了监听器的使用。对于Java中的引用,初始化类等,开始我并不是非常的理解,知道就这么做就能实现相应的功能了,并没有很深刻的去理解它为什么要这么做。但是真正的要用Java去做一个东西不理解它是不行的,而且其间这课设涉与到了Java中的绝大多数的知识点,如Java图形用户界面设计、Java的全局变量和局部变量、Java监听器的作用等等,要应用这些东西就要求我要去好好的去理解Java的这些规则。好多想法只有在经过编写成程序语言调试后才知道能不能达到预先的目的,如果出现了问题,要想方设法进行改进,优化,最终才可能得到自己想要的结果。还有再编写过程发现了自己好多细节都不清楚,比如变量类型的相互转换啊,某一个方法里的形参类型啊,经常容易搞错,实践比只看书的效率更高,而且看着自己的想法一步步实现,会越来越感兴趣。程序编写调试完成后,虽然功能实现了,但是可能整个代码语句很繁琐臃肿,或者采用的某些方法不科学,消耗不必要的资源等,这时还应该继续将程序优化,是程序代码显得简洁,精炼。当然这对于编写者的要求很高,有相当的技巧性,而这也是我有很大不足之处。希望在以后的学习和实践中慢慢积累,并借助相关资料,帮助自己提高编程的技能。这次试验我们有不足:在某些方面,界面不是很美观,有点功能间的连接做的也不是特别的好,但是我能认识到自己的不足,并且在跟同学的交流中也学到了一些他们的设计思路,也知道今后要加强哪些方面的知识。比如在染色体实验中,我在做完后与其他同学一比较,才发现自己的界面设置的并不美观,比如我可以用标签来代替按钮。还有很多,总之通过这次实验我获得了不少。附件:1、计算器源代码importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassjisuanqi{ publicstaticvoidmain(String[]args) { BorderFrameframe=newBorderFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.show(); }}classBorderFrameextendsJFrameimplementsActionListener{ publicBorderFrame() { setTitle("雷神牌计算器"); setSize(WIDTH,HEIGHT); ContainercontentPane=getContentPane(); //家按钮 buttons=newJPanel(); num0=newJButton("0");num1=newJButton("1");num2=newJButton("2");num3=newJButton("3");num4=newJButton("4");num5=newJButton("5");num6=newJButton("6");num7=newJButton("7");num8=newJButton("8");num9=newJButton("9");jiecheng=newJButton("!");youk=newJButton("^");dian=newJButton(".");zf=newJButton("-/+");plu=newJButton("+");min=newJButton("-");mul=newJButton("x");div=newJButton("/");equ=newJButton("=");cle=newJButton("C");dao=newJButton("1/x");gen=newJButton("sqrt");ss=newJButton("四舍五入");bac=newJButton("back");num0.setBackground(Color.white);num1.setBackground(Color.white);num2.setBackground(Color.white);num3.setBackground(Color.white);num4.setBackground(Color.white);num5.setBackground(Color.white);num6.setBackground(Color.white);num7.setBackground(Color.white);num8.setBackground(Color.white);num9.setBackground(Color.white);equ.setBackground(Color.white);dian.setBackground(Color.white);buttons.setLayout(newGridLayout(6,4,5,5));buttons.add(num9);buttons.add(num8);buttons.add(num7);buttons.add(plu);buttons.add(num6);buttons.add(num5);buttons.add(num4);buttons.add(min);buttons.add(num3);buttons.add(num2);buttons.add(num1);buttons.add(mul);buttons.add(num0);buttons.add(dian);buttons.add(equ);buttons.add(div);buttons.add(jiecheng);buttons.add(youk);buttons.add(cle);buttons.add(zf);buttons.add(dao);buttons.add(gen);buttons.add(ss);buttons.add(bac); num9.addActionListener(this);num8.addActionListener(this);num7.addActionListener(this);num6.addActionListener(this);num5.addActionListener(this);num4.addActionListener(this);num3.addActionListener(this);num2.addActionListener(this);num1.addActionListener(this);num0.addActionListener(this);plu.addActionListener(this);min.addActionListener(this);mul.addActionListener(this);div.addActionListener(this);equ.addActionListener(this);cle.addActionListener(this);jiecheng.addActionListener(this);youk.addActionListener(this);dian.addActionListener(this);zf.addActionListener(this);dao.addActionListener(this);gen.addActionListener(this);ss.addActionListener(this); bac.addActionListener(this); //家文本框, JPaneltext=newJPanel(); resultText=newJTextField("",25); resultText.setEnabled(false); text.setLayout(newFlowLayout(FlowLayout.LEFT)); text.add(resultText); contentPane.add(text,BorderLayout.NORTH); contentPane.add(buttons,BorderLayout.CENTER);//chuangjiancaidan;JMenuBarmainMenu=newJMenuBar();setJMenuBar(mainMenu);JMenuactMenu=newJMenu("文件");JMenusetColorMenu=newJMenu("颜色");JMenuaboutMenu=newJMenu("作者");mainMenu.add(actMenu);mainMenu.add(setColorMenu);mainMenu.add(aboutMenu);tuichu=newJMenuItem("退出");actMenu.add(tuichu);banquan=newJMenuItem("版权");aboutMenu.add(banquan);chanpin=newJMenuItem("产品信息");aboutMenu.add(chanpin);hongse=newJMenuItem("红色");setColorMenu.add(hongse);lanse=newJMenuItem("蓝色");setColorMenu.add(lanse);huise=newJMenuItem("灰色");setColorMenu.add(huise);zhizuodi=newJMenuItem("地址");aboutMenu.add(zhizuodi);banquan.addActionListener(this);zhizuodi.addActionListener(this);hongse.addActionListener(this);lanse.addActionListener(this);huise.addActionListener(this);tuichu.addActionListener(this);chanpin.addActionListener(this);} publicvoidactionPerformed(ActionEvente){Objectsource=e.getSource();Stringt=null;if(source==banquan) { intselection=JOptionPane.showConfirmDialog( BorderFrame.this, "刘晓雷20095406;李伟20095378;周洪芬20095379","版权雷神牌计算器", JOptionPane.DEFAULT_OPTION); } if(source==chanpin) { intselection=JOptionPane.showConfirmDialog( BorderFrame.this, "雷神出品必为精品","雷神牌计算器", JOptionPane.DEFAULT_OPTION); }if(source==chanpin) { intselection=JOptionPane.showConfirmDialog( BorderFrame.this, "谢谢使用","雷神牌计算器", JOptionPane.DEFAULT_OPTION); }if(source==zhizuodi) { intselection=JOptionPane.showConfirmDialog( BorderFrame.this, "合肥工业大学机房","地址", JOptionPane.DEFAULT_OPTION); } if(source==lanse) {buttons.setBackground(Color.blue); }if(source==hongse) {buttons.setBackground(Color.red); } if(source==huise) {buttons.setBackground(Color.lightGray); }if(source==tuichu) {intselection=JOptionPane.showConfirmDialog( BorderFrame.this, "确定退出
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年竞彩培训测试题及答案
- 文艺晚会开幕词14篇
- 西政考研复试题库专属背诵方法+配套标准答案(可直接背诵)
- 河北省保定市安新县2025届四上数学阶段调研模拟试题含答案
- 河北省保定市北市区2025-2026学年数学三年级第二学期期末达标检测模拟试题(含答案)
- 沧州市2025年数学三年级第二学期期末检测模拟试题(含答案解析)
- 2026年高校职业技能培训优化研究方案
- 沁县2025届数学四年级下学期期中联考模拟试题(含答案解析)
- 2026年银行主题活动营销方案策划
- 2026年科技创新活动方案设计
- 江苏省无锡市2025-2026学年五年级下学期6月数学期末调研试题(试卷+答案)
- 湖南省2026年全省政工专业知识考试(政治+中国近现代史)试题解析及核心考点
- 广东省中山市2024-2025学年高一地理上学期期末考试试试题含解析
- 天津市南开区2023-2024学年四年级下学期6月期末数学试题
- 2024年四川省凉山彝族自治州中考道德与法治真题(原卷版+解析版)
- 质量信得过班组汇报材料课件
- 学院监察工作试点的实施方案
- 中学数学教学设计研究的开题报告
- APD自动化腹膜透析机的使用
- 220kv输电线路工程建设监理实施细则
- 体育概论全部课件
评论
0/150
提交评论