JAVA課程設(shè)計(jì) 計(jì)算器 文本編輯器

上傳人:優(yōu)*** 文檔編號(hào):55506773 上傳時(shí)間:2022-02-18 格式:DOC 頁數(shù):46 大?。?92.50KB
收藏 版權(quán)申訴 舉報(bào) 下載
JAVA課程設(shè)計(jì) 計(jì)算器 文本編輯器_第1頁
第1頁 / 共46頁
JAVA課程設(shè)計(jì) 計(jì)算器 文本編輯器_第2頁
第2頁 / 共46頁
JAVA課程設(shè)計(jì) 計(jì)算器 文本編輯器_第3頁
第3頁 / 共46頁

下載文檔到電腦,查找使用更方便

20 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《JAVA課程設(shè)計(jì) 計(jì)算器 文本編輯器》由會(huì)員分享,可在線閱讀,更多相關(guān)《JAVA課程設(shè)計(jì) 計(jì)算器 文本編輯器(46頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、真誠為您提供優(yōu)質(zhì)參考資料,若有不當(dāng)之處,請(qǐng)指正。 課 程 設(shè) 計(jì) 設(shè)計(jì)題目: JAVA語言編寫計(jì)算器和文檔編輯器 學(xué)生姓名: 李偉 學(xué) 號(hào): 20095378 專業(yè)班級(jí): 電子商務(wù)09-1班 指導(dǎo)教師: 聶會(huì)星 程八一 惠剛 靳鵬 方芳 2010 年 12 月 12 日 計(jì)算器制作 一、實(shí)驗(yàn)?zāi)康? 1、為了加深對(duì)課堂講授內(nèi)容的理解,掌握解決實(shí)際應(yīng)用問題時(shí)所應(yīng)具有的查閱

2、資料、技術(shù)標(biāo)準(zhǔn)和規(guī)范,以及軟件編程、調(diào)試等能力,掌握面向?qū)ο蟮木幊趟枷爰癑ava語言程序設(shè)計(jì)的規(guī)律與技巧,為進(jìn)一步學(xué)習(xí)Java高級(jí)應(yīng)用及今后從事專業(yè)工作打下基礎(chǔ)。 2、在對(duì)Java程序的調(diào)試過程中,提高分析程序中出現(xiàn)的錯(cuò)誤和排除這些錯(cuò)誤的能力。通過上機(jī)實(shí)踐,加深學(xué)生對(duì)計(jì)算機(jī)軟件運(yùn)行環(huán)境,以及對(duì)操作系統(tǒng)與計(jì)算機(jī)語言支持系統(tǒng)相互關(guān)系的了解。 3、熟悉Java開發(fā)工具,運(yùn)行java應(yīng)用程序和小程序;掌握J(rèn)ava程序的編輯、編譯、運(yùn)行。掌握各種數(shù)據(jù)類型及其使用方法;掌握表達(dá)式的組成;理解定義變量的作用,掌握定義變量的方法;掌握各種運(yùn)算符的使用及其優(yōu)先級(jí)控制。學(xué)習(xí)結(jié)構(gòu)化程序設(shè)計(jì)的分支結(jié)構(gòu)及分支語句的

3、使用;學(xué)習(xí)使用結(jié)構(gòu)化程序設(shè)計(jì)的循環(huán)結(jié)構(gòu)及循環(huán)語句的使用;掌握數(shù)組的使用方法,著重掌握二維數(shù)組,編寫使用二維數(shù)組的程序;掌握常用字符串類、方法。 4、學(xué)會(huì)類的定義和對(duì)象的使用;封裝、繼承、多態(tài)的應(yīng)用;如何創(chuàng)建包,編譯、運(yùn)行包中的類;方法的覆蓋和重載;抽象類、接口、內(nèi)部類的使用。 掌握異常處理的使用方法。著重掌握基本的GUI組件;掌握容器布局管理;掌握事件處理機(jī)制。 二、實(shí)驗(yàn)要求 計(jì)算器要有GUI界面,用戶可以輸入所需計(jì)算的數(shù)值,可以進(jìn)行加、減、乘、除四種最基本的運(yùn)算,可以求一個(gè)數(shù)值的平方及倒數(shù),可以進(jìn)行階乘運(yùn)算,要能運(yùn)算小數(shù),并且不會(huì)產(chǎn)生精度損失,在必要情況下,可以進(jìn)行四舍五入的運(yùn)算。允

4、許正負(fù)數(shù)間的運(yùn)算。 三、實(shí)驗(yàn)內(nèi)容 通過創(chuàng)建一個(gè)框架并在框架上加上適當(dāng)?shù)陌粹o以及文本框并通過對(duì)按鈕設(shè)置監(jiān)聽器以達(dá)到進(jìn)行運(yùn)算的目的,由于對(duì)java知識(shí)掌握的不多還需要通過參閱書本來完成,我們小組有三個(gè)人,我負(fù)責(zé)做算法部分,其他兩人負(fù)責(zé)界面布局以及監(jiān)聽器的設(shè)置。在實(shí)驗(yàn)過程中,我們共同合作每個(gè)人都參加了所有程序的編寫過程。 四、實(shí)驗(yàn)步驟 1、首先要聲明包。主要用到了以下幾個(gè)包: import java.awt.*; import java.awt.event.*; import javax.swing.*; 導(dǎo)入了包之后就可以運(yùn)用包中的類了。 2、創(chuàng)建框架。 以下用BorderFr

5、ame類構(gòu)造frame函數(shù),然后設(shè)置框架的格式為最小化、最大化、關(guān)閉。然后show的作用是顯示該框架。 BorderFrame frame = new BorderFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.show(); 3、編寫B(tài)orderFrame類,定義各個(gè)變量。 class BorderFrame extends JFrame implements ActionListener 這里要用到ActionListener接口,是下面監(jiān)聽器所需要的。 定義變量例如下面代碼:

6、 private JButton num0,dao,gen,ss,bac; public double d,d11; public double jieguo; public boolean end=true; 而在實(shí)際編寫過程中我是用到一個(gè)定義一個(gè)。 4、定義各組件,在框架上加入各種組件。 接下來是定義按鈕num0=new JButton("0");括號(hào)里的即為按鈕顯示的信息。依次再創(chuàng)建23個(gè)按鈕。剛開始在BorderFrame()方法里我使用JButton num0=new JButton("0")來定義按鈕,后來發(fā)現(xiàn)在actionPerfor

7、med方法里不能使用這些按鈕,所以要在BorderFrame這個(gè)類中定義, JButton num0;這樣就能被BorderFrame類里的所有方法采用而不會(huì)出現(xiàn)未定義的錯(cuò)誤。 在布局的時(shí)候?yàn)榱朔乐诡伾珕握{(diào),將按鈕背景顏色設(shè)置為白色,采用setBackground()方法,具體代碼如下: num0.setBackground(Color.white); 這樣依次設(shè)置12個(gè)按鈕,其他按鈕仍為默認(rèn)顏色。 接著創(chuàng)建buttons面板方法如下: buttons=new JPanel(); 接著把所有的按鈕加到buttons面板程序代碼如下: buttons.add(num0); 然后

8、依次把所有按鈕加入即可。在布局的時(shí)候采用了setLayout 方式布局具體代碼如下:buttons.setLayout(new GridLayout(6,4,5,5)); 后面的四個(gè)數(shù)分別是6行4列,間隙的高5寬5。這樣之后布局如下 接著編寫文本框并將文本域設(shè)置為不可編輯,代碼如下 resultText= new JTextField("", 25); resultText.setEnabled(false); 然后將文本域加入到text面板中具體代碼如下: JPanel text=new JPanel(); text.add(resultText); 之后再將面板加入

9、到內(nèi)容窗格布局中具體代碼如下: Container contentPane = getContentPane(); contentPane.add(text, BorderLayout.NORTH); contentPane.add(buttons, BorderLayout.CENTER); 在計(jì)算器制作過程中為了使界面更加人性化,并為使用者提供一些制作信息我們小組特意加入了菜單欄。首先創(chuàng)建菜單欄并將菜單欄加入到框架中具體代碼如下: JMenuBar mainMenu = new JMenuBar(); setJMenuBar(mainMenu); 接著創(chuàng)建三個(gè)主菜單名

10、字分別為文件、顏色、作者具體代碼如下: JMenu actMenu = new JMenu("文件"); JMenu setColorMenu = new JMenu("顏色"); JMenu aboutMenu = new JMenu("作者"); mainMenu.add(actMenu); mainMenu.add(setColorMenu); mainMenu.add(aboutMenu); 接下來分別向各個(gè)主菜單中加入子菜單具體代碼如下 tuichu = new JMenuItem("退出"); actMenu.add

11、(tuichu); banquan = new JMenuItem("版權(quán)"); aboutMenu.add(banquan); chanpin = new JMenuItem("產(chǎn)品信息"); aboutMenu.add(chanpin); hongse = new JMenuItem("紅色"); setColorMenu.add(hongse); lanse = new JMenuItem("藍(lán)色"); setColorMenu.add(lanse); huise = new JMenuItem("灰色"); setCol

12、orMenu.add(huise); 菜單顯示如下圖所示: 5、創(chuàng)建監(jiān)聽器 每個(gè)按鈕都是事件源,我們對(duì)按鈕設(shè)置監(jiān)聽器后,只要該按鈕發(fā)生一個(gè)事件(ActionEvent),listenter對(duì)象就是接到通知。 我們?cè)O(shè)置監(jiān)聽器的方法如下所示: num9.addActionListener(this); num8.addActionListener(this); num7.addActionListener(this); num6.addActionListener(this); num5.addActionListener(this); num4.a

13、ddActionListener(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.addActionLi

14、stener(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); 在這

15、里,所有的按鈕共享一個(gè)監(jiān)聽器對(duì)象。所以在actionPerformed方法中,必須判斷那個(gè)按鈕被按下,即事件源,可以通過EventObject類的getSource方法來判斷。 接著對(duì)菜單也設(shè)置了監(jiān)聽器如下: banquan.addActionListener(this); zhizuodi.addActionListener(this); hongse.addActionListener(this); lanse.addActionListener(this); huise.addActionListener(this); tuichu.addActionListener(th

16、is); chanpin.addActionListener(this); 這樣所有的監(jiān)聽器就制作好了。 6、編寫actionPerformed方法 在actionPerformed方法里包括了所有按鈕以及子菜單的點(diǎn)擊事件,包括了所有的算法。 首先設(shè)置點(diǎn)banqun菜單后,將會(huì)彈出一個(gè)showConfirmDialo型對(duì)話框,里面的按鈕是 DEFAULT_OPTION類型,標(biāo)題是“版權(quán)雷神牌計(jì)算器”,對(duì)話框里的內(nèi)容是" 劉曉雷 20095406;李偉20095378;周洪芬20095379 "具體代碼如下: if (source==banquan)

17、 { int selection=JOptionPane.showConfirmDialog( BorderFrame.this, " 劉曉雷 20095406;李偉20095378;周洪芬20095379 ","版權(quán)雷神牌計(jì)算器", JOptionPane.DEFAULT_OPTION); } 接著編寫chanpin菜單即作者信息的事件,當(dāng)點(diǎn)擊作者信息時(shí)會(huì)彈出如下對(duì)話框: 當(dāng)點(diǎn)擊確定后會(huì)彈出另一個(gè)對(duì)話框如圖:

18、 代碼如下 if (source==chanpin) { int selection=JOptionPane.showConfirmDialog( BorderFrame.this, " 雷神出品必為精品 ","雷神牌計(jì)算器", JOptionPane.DEFAULT_OPTION); } if (source==chanpin)

19、 { int selection=JOptionPane.showConfirmDialog( BorderFrame.this, " 謝謝使用","雷神牌計(jì)算器", JOptionPane.DEFAULT_OPTION); } 可以看出就是將source判斷兩次是否等于chanpin,這樣當(dāng)?shù)谝粋€(gè)對(duì)話框執(zhí)行完之后就會(huì)彈出第二個(gè)對(duì)話框以達(dá)到效果。 接著設(shè)置tuichu菜單的事件,當(dāng)

20、點(diǎn)擊退出時(shí)會(huì)出現(xiàn)如下對(duì)話框: 如果點(diǎn)擊了確定就會(huì)退出,點(diǎn)擊了撤銷就會(huì)回到原界面代碼如下: if (source==tuichu) { int selection = JOptionPane.showConfirmDialog( BorderFrame.this, "確定退出么?", "退出?", JOptionPane.OK_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE); if (selection == JOptionPane.OK_OPTIO

21、N) { System.exit(5); } } System.exit(5)語句就是退出框架的意思,括號(hào)里的可以為任意值,消息類型為WARNING_ MESSAGE可以看出與上面兩個(gè)對(duì)話框不同的是對(duì)話框里有了警告的提示。 設(shè)置完之后設(shè)置顏色菜單的事件如下: if (source==lanse) {buttons.setBackground(Color.blue); } if

22、(source==hongse) {buttons.setBackground(Color.red); } if (source==huise) {buttons.setBackground(Color.lightGray); } setBackground就是設(shè)置背景顏色的函數(shù),這樣就達(dá)到了改變背景顏色的目的。 接下來就進(jìn)入計(jì)算階段的編寫了, 首先要達(dá)到點(diǎn)擊數(shù)字按鈕,文本框里會(huì)顯示數(shù)字如下所示: if(source=

23、=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.setT

24、ext(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);}

25、 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()就是獲取文本框中的字符串,resu

26、ltText.setText(t)就是使文本框中顯示字符串t;這樣就可以在文本框中輸入數(shù)字了如下圖所示: 7、我的算法。 接下來進(jìn)行算法的編寫,算法編寫主要是我編寫的,這些算法不是一下子就能想出來的,而是一步步不斷完善而成的,我相信如果有時(shí)間我會(huì)更加完善我的算法的。 加法的代碼如下: if(source==plu) { if(z!=1) {c5=1; c1=Double.parseDouble(resultText.getText().trim());

27、 end=false;z=0;} if(z==1) {c5=1;c1=jieguo; z=0; } } 這里z值就是判斷變量用來判斷=是否執(zhí)行過的,end就是用來清空文本框的,c5就是控制變量用來判斷是否執(zhí)行過+運(yùn)算。 =的代碼如下: if(source==equ) { if(c10!=0) { jieguo=1;for(int i=1;i<=c9;i++)

28、 jieguo=i*jieguo; t=(""+jieguo);c10=0; } if(c5!=0.0) {d=Double.parseDouble(resultText.getText().trim()); jieguo=c1+d; t=(""+jieguo); c5=0;}

29、 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());

30、 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)

31、 {d=Double.parseDouble(resultText.getText().trim()); jieguo=1; for(int i=1;i<=d;i++) jieguo=c11*jieguo; t=(""+jieguo); c12=0;} end=false; resultText.setText(t);

32、 z=1; } 其中從c5到c8還有c10都是控制變量用來判斷帶年紀(jì)過哪一個(gè)運(yùn)算符。 用一個(gè)加法來講解我的流程,點(diǎn)擊順序9+72=+3= 首先點(diǎn)擊9這個(gè)按鈕,接著文本框中就會(huì)顯示9,點(diǎn)擊+后因?yàn)閦初值為零,所以就獲取了文本框中的數(shù)值c1=9,然后控制變量c5=1,end=false。文本框中仍然顯示著9。接著進(jìn)行下一個(gè)循環(huán),當(dāng)點(diǎn)擊按鈕時(shí)下一個(gè)循環(huán)才會(huì)進(jìn)行也就是說看不到清零過程,點(diǎn)7按鈕,接著有一個(gè)end=true語句,然后點(diǎn)擊2文本框中顯示72,然后點(diǎn)擊=號(hào),此時(shí)執(zhí)行if語句中的c5!=0,d=72,結(jié)果

33、=81,end=false,z=0,顯示81,當(dāng)點(diǎn)擊+時(shí),c1=jieguo即81,end=false,點(diǎn)擊3繼續(xù)清零,文本框中顯示3,點(diǎn)=,結(jié)果就是84。 還有一些其他的運(yùn)算都很簡單,詳見源代碼。這樣就完成了計(jì)算器的編寫。 五、實(shí)驗(yàn)結(jié)果 輸入5.2執(zhí)行四舍五入運(yùn)算 求9+72+3結(jié)果 點(diǎn)擊9+72=+3= 點(diǎn)擊9,點(diǎn)擊完+號(hào)后: 接著點(diǎn)擊7 點(diǎn)擊2 點(diǎn)擊= 接著點(diǎn)擊+3 點(diǎn)擊加號(hào)的時(shí)候會(huì)出現(xiàn)清零過程,接著點(diǎn)擊= 這樣就完成了運(yùn)算結(jié)果, 點(diǎn)擊四舍五入按鈕后如下:

34、 文本編輯器 一、實(shí)驗(yàn)?zāi)康模? 綜合掌握J(rèn)ava編程技巧及Java開發(fā)環(huán)境。 二、實(shí)驗(yàn)要求: 可以設(shè)置文本的字體、大小、顏色等基本參數(shù),可以讀取計(jì)算機(jī)中TXT文件,可以生成一個(gè)新的TXT文件。其他功能參照windows的文本編輯器。 三、實(shí)驗(yàn)內(nèi)容 通過創(chuàng)建一個(gè)框架并在框架上加上適當(dāng)?shù)牟藛螜谝约拔谋居虿⑼ㄟ^對(duì)菜單設(shè)置監(jiān)聽器以達(dá)到進(jìn)行字體大小顏色的控制,由于對(duì)java知識(shí)掌握的不多還需要通過參閱書本來完成,我們小組有三個(gè)人,我負(fù)責(zé)做算法部分,其他兩人負(fù)責(zé)界面布局以及監(jiān)聽器的設(shè)置。在實(shí)驗(yàn)過程中,我們共同合作每個(gè)人都參加了所有程序的編寫過程。 四、實(shí)驗(yàn)步驟

35、 1、聲明包 import java.awt.font.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; 其中java.io是提供輸入流輸出流控制。 2、創(chuàng)建框架。 以下用ListFrame類構(gòu)造frame函數(shù),然后設(shè)置框架的格式為最小化、最大化、關(guān)閉。然后show的作用是顯示該框架。 ListFrame frame = new ListFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON

36、_CLOSE); frame.show(); 3、編寫ListFrame類,定義各個(gè)變量。 class ListFrame extends JFrame implements ActionListener 這里要用到ActionListener接口,是下面監(jiān)聽器所需要的。 定義并初始化如下: public String dax[]={"5","10","15","20","25","30","35","40","..."}; 定義列表框并初始化: public JComboBox box=new JComboBox(dax); public static fin

37、al int WIDTH =500; public static final int HEIGHT = 450; public static final String checkedLabel="You choosed: \nIndex, Course\n"; public String t=null; public JTextArea myTextArea; private JList courseList; private JPanel listPanel; Dialog tanchu=new Dialog(this); public Button

38、que=new Button("確定"); public JCheckBoxMenuItem toolItem,statusItem ; JLabel tishi=new JLabel("字體大小:"); public JMenuItem jianqie,niantie,fuzhi,banquan,hongse,lanse,huise,heise,tuichu,chengse,luse,shezhi,xinxi; public JMenuItem zhizuodi,songti,heiti,kaiti,lishu,youyuan,dakai,baocun,lingcu

39、n,item11,item12,item13; FileDialog open=new FileDialog(this,"打開.."); FileDialog save=new FileDialog(this,"另存為..",FileDialog.SAVE); int shifulingcun; JPopupMenu menu; 而在實(shí)際編寫過程中我是用到一個(gè)定義一個(gè),而不是一起定義的。 4、定義各組件,在框架上加入各種組件。 創(chuàng)建文本域,并將文本域加入到滾動(dòng)條中,創(chuàng)建面板,并將帶有文本域的滾動(dòng)條加入到面板中,具體代碼如下: Container contentPa

40、ne = getContentPane(); JPanel textPanel = new JPanel(); myTextArea = new JTextArea( 21, 43); JScrollPane textScrollPane = new JScrollPane(myTextArea); textPanel.add(textScrollPane); contentPane.add(textPanel); 創(chuàng)建菜單欄,并創(chuàng)建四個(gè)主菜單,分別為四個(gè)主菜單設(shè)置快捷鍵 JMenuBar mainMenu = new JMenuBar(); setJ

41、MenuBar(mainMenu); JMenu actMenu = new JMenu("文件(A)"); JMenu bianMenu = new JMenu("編輯(B)"); JMenu setColorMenu = new JMenu("顏色(S)"); JMenu aboutMenu = new JMenu("作者(C)"); JMenu daxMenu = new JMenu("大小(D)"); JMenu zitMenu = new JMenu("字體(E)"); actMenu.setMnemonic('A'); bi

42、anMenu.setMnemonic('B'); setColorMenu.setMnemonic('S'); aboutMenu.setMnemonic('C'); daxMenu.setMnemonic('D'); zitMenu.setMnemonic('E'); 定義子菜單并將子菜單加入到主菜單中并設(shè)置加速器: dakai = new JMenuItem("打開(L)"); actMenu.add(dakai); dakai.setAccelerator(KeyStroke.getKeyStroke( KeyEvent.VK_L, I

43、nputEvent.CTRL_MASK)); lingcun = new JMenuItem("另存為(Y)"); 這個(gè)的加速器是Ctrl+L當(dāng)按下 Ctrl+L時(shí)就是點(diǎn)擊了該子菜單。 actMenu.add(lingcun); 創(chuàng)建單選框并將單選框加入到子菜單中: toolItem = new JCheckBoxMenuItem ("自動(dòng)換行"); statusItem = new JCheckBoxMenuItem ("取消自動(dòng)"); ButtonGroup group =new ButtonGroup(); group.add(toolItem

44、); group.add(statusItem); optionMenu.add(toolItem); optionMenu.add(statusItem); bianMenu.add(optionMenu); 還有其他的許多子菜單的定義方法如上詳見源代碼。 定義三個(gè)子菜單和一個(gè)彈出式菜單,將三個(gè)子菜單加入到彈出菜單中 item11=new JMenuItem("復(fù)制"); item12=new JMenuItem("粘貼"); item13=new JMenuItem("剪切"); menu=new JPopupMenu(); menu.ad

45、d(item11); menu.add(item12); menu.add(item13); 5、設(shè)置鼠標(biāo)右鍵 當(dāng)點(diǎn)擊鼠標(biāo)右鍵時(shí)彈出菜單: myTextArea.addMouseListener(new MouseAdapter(){ public void mousePressed(MouseEvent e){ if(e.getModifiers()==InputEvent.BUTTON3_MASK) menu.show(myTextArea,e.getX(),e.getY()); } });

46、6、設(shè)置監(jiān)聽器 每個(gè)按鈕都是事件源,我們對(duì)按鈕設(shè)置監(jiān)聽器后,只要該按鈕發(fā)生一個(gè)事件(ActionEvent),listenter對(duì)象就是接到通知。 我們?cè)O(shè)置監(jiān)聽器的方法如下所示: lingcun.addActionListener(this); baocun.addActionListener(this); tuichu.addActionListener(this); dakai.addActionListener(this); banquan.addActionListener(this); xinxi.addActionListener(this); zh

47、izuodi.addActionListener(this); hongse.addActionListener(this); lanse.addActionListener(this); huise.addActionListener(this); heise.addActionListener(this); chengse.addActionListener(this); luse.addActionListener(this); zitMenu.addActionListener(this); songti.addActionListe

48、ner(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.addActionListene

49、r(this); 在這里,所有的按鈕共享一個(gè)監(jiān)聽器對(duì)象。所以在actionPerformed方法中,必須判斷那個(gè)按鈕被按下,即事件源,可以通過EventObject類的getSource方法來判斷。接著對(duì)彈出菜單里的子菜單設(shè)置監(jiān)聽器: item11.addActionListener(this); item12.addActionListener(this); item13.addActionListener(this); 7、設(shè)置作者菜單里的子菜單的點(diǎn)擊事件。 當(dāng)點(diǎn)擊版權(quán)子菜單時(shí),先彈出制作人信息,關(guān)閉對(duì)話框后,接著彈出感謝提示 if (source==banquan)

50、 { int selection=JOptionPane.showConfirmDialog( ListFrame.this, " 劉曉雷 20095406;李偉20095378;周洪芬20095379 ","版權(quán)", JOptionPane.DEFAULT_OPTION); } if (source==banquan) { int selection=

51、JOptionPane.showConfirmDialog( ListFrame.this, " 感謝觀看 ","版權(quán)", JOptionPane.DEFAULT_OPTION); } 當(dāng)點(diǎn)擊信息時(shí),彈出提示產(chǎn)品信息對(duì)話框,代碼如下: if (source==xinxi) { int selection=JOptionPane.showConfirmDialog( ListFrame.this,

52、" 雷神牌記事本 \n 雷神出品必為精品 ","產(chǎn)品信息", JOptionPane.DEFAULT_OPTION); } 當(dāng)點(diǎn)擊zhizuodi時(shí)會(huì)提示制作地信息,具體代碼如下: if (source==zhizuodi) { int selection=JOptionPane.showConfirmDialog( ListFrame.this, "合肥工業(yè)大學(xué)機(jī)房 ","地址",

53、 JOptionPane.DEFAULT_OPTION); } 8、設(shè)置編輯菜單里的子菜單。 首先設(shè)置兩個(gè)單選框,這里要用到自動(dòng)換行的函數(shù).setLineWrap(true)就是自動(dòng)換行,當(dāng)參數(shù)改成false時(shí)就不能自動(dòng)換行了。具體代碼如下: if (source==toolItem) { myTextArea.setLineWrap(true); } if (source==statusItem) {

54、 myTextArea.setLineWrap(false); } 接著設(shè)置剪切,復(fù)制粘貼子菜單要用到.cut().copy().paste()函數(shù),具體代碼如下: if (source==jianqie) {myTextArea.cut();} if (source==fuzhi) {myTextArea.copy();}

55、 if (source==niantie) { myTextArea.paste(); } 9、設(shè)置顏色菜單的下拉菜單 這里要用到.setForeground()函數(shù),當(dāng)設(shè)置完之后字的顏色就是后面參數(shù)里的顏色。 if (source==hongse) { myTextArea.setForeground(Color.red); } if (source==lanse) { myTextArea.setForeground(Color.blue)

56、; } if (source==huise) { myTextArea.setForeground(Color.gray); } if (source==chengse) { myTextArea.setForeground(Color.orange); } if (source==luse) { myTextArea.setForeground(Color.green); }

57、 if (source==heise) { myTextArea.setForeground(Color.black); } 10、設(shè)置字體菜單的下拉菜單。 這里一共設(shè)置了五種字體,首先設(shè)置字體要用獲得文本域中的格式用Font f=myTextArea.getFont();就可以獲得,然后在設(shè)置字體格式時(shí)只改變字體其他就可以用f.getStyle(),f.getSize())來表示。具體代碼如下: if (source==songti) { Font f=myTextArea.get

58、Font(); myTextArea.setFont(new Font("宋體",f.getStyle(),f.getSize())); } if (source==heiti) { Font f=myTextArea.getFont(); myTextArea.setFont(new Font("黑體",f.getStyle(),f.getSize())); } if (source=

59、=kaiti) { Font f=myTextArea.getFont(); myTextArea.setFont(new Font("楷體",f.getStyle(),f.getSize())); } if (source==lishu) { Font f=myTextArea.getFont(); myTextArea.setFont(new Font("隸書",f.getS

60、tyle(),f.getSize())); } if (source==youyuan) { Font f=myTextArea.getFont(); myTextArea.setFont(new Font("幼圓",f.getStyle(),f.getSize())); } 11、設(shè)置文件下拉菜單里的功能。 當(dāng)點(diǎn)擊退出時(shí)會(huì)彈出OK_CANCEL_OPTION形式的對(duì)話框,如果選擇的是ok就會(huì)退出框架,用到了System.

61、exit(0)函數(shù)。具體代碼如下。 if (source==tuichu) { int selection = JOptionPane.showConfirmDialog( ListFrame.this, "確定退出么?", "退出?", JOptionPane.OK_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE); if (selection == JOptionPane.OK_OPTION) { System.exit(

62、0); }} 12、設(shè)置打開文件菜單。 在前面定義的時(shí)候用到過FileDialog open=new FileDialog(this,"打開..");這個(gè)就是設(shè)置打開的對(duì)話框,標(biāo)題為打開,右面的按鈕默認(rèn)為打開。這里用到了輸入流和.read函數(shù)。用到了try語句防止出錯(cuò)。open.getDirectory()+open.getFile()是獲取文件名稱類型內(nèi)容。 if(source==dakai) {open.setVisible(true); String name=open.getDirectory()+open.getFile(); try

63、 { FileInputStream laiyuan=new FileInputStream(name); byte[] duqu=new byte[laiyuan.available()]; laiyuan.read(duqu); myTextArea.setText(new String(duqu)); laiyuan.close(); } catch(IOException a) { System.err.println("打開文件失敗"); } } 13、設(shè)

64、置保存和另存為功能。 在前面曾經(jīng)定義過FileDialog save=new FileDialog(this,"另存為..",FileDialog.SAVE);意思是一個(gè)標(biāo)題為另存為的對(duì)話框,右下方的按鈕是保存。這里用到了輸出流。和try語句糾錯(cuò)功能。在保存里有一個(gè)變量shifulingcun,如果曾經(jīng)執(zhí)行過另存為,那么變量值為1,否則為默認(rèn)值0,在執(zhí)行保存的時(shí)候就判斷是否執(zhí)行過另存為,如果執(zhí)行過另存為就不執(zhí)行save.setVisible(true);語句,即不顯示彈出的框架,直接默認(rèn)保存。具體語句如下: if(source==lingcun) { save.setVisib

65、le(true); String name=save.getDirectory()+save.getFile(); try { OutputStream out=new FileOutputStream(name); out.write(myTextArea.getText().getBytes()); out.close(); } catch(IOException b) { System.err.println("打開文件失敗"); } shifulingcun=1

66、; } if(source==baocun) { if(shifulingcun!=1) {save.setVisible(true);}shifulingcun=1; String name=save.getDirectory()+save.getFile(); try { FileOutputStream out=new FileOutputStream(name); out.write(myTextArea.getText().getBytes()); out.close(); } catch(IOException b) { System.err.println("打開文件失敗"); }} 14、編寫字體大小里的彈出框架。 在前面曾經(jīng)定義過Dialog框架,這里就是我們所用到的,我在框架上加入組合框標(biāo)簽以及按鈕組建通過這些來設(shè)置字體大小,與前面直接在子菜單里設(shè)置的不同,其中組合框以及按鈕的監(jiān)聽器設(shè)置與以前有

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!