版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 課 程 設(shè) 計</p><p> 設(shè)計題目: JAVA語言編寫計算器和文檔編輯器 </p><p> 學(xué)生姓名: </p><p> 學(xué) 號: </p><p> 專業(yè)班級: 電子商務(wù)10-1班
2、 </p><p> 指導(dǎo)教師: </p><p> 2011 年 12 月 12 日</p><p><b> 計算器制作</b></p><p><b> 一、實驗?zāi)康?lt;/b></p><p>
3、; 1、為了加深對課堂講授內(nèi)容的理解,掌握解決實際應(yīng)用問題時所應(yīng)具有的查閱資料、技術(shù)標(biāo)準(zhǔn)和規(guī)范,以及軟件編程、調(diào)試等能力,掌握面向?qū)ο蟮木幊趟枷爰癑ava語言程序設(shè)計的規(guī)律與技巧,為進一步學(xué)習(xí)Java高級應(yīng)用及今后從事專業(yè)工作打下基礎(chǔ)。</p><p> 2、在對Java程序的調(diào)試過程中,提高分析程序中出現(xiàn)的錯誤和排除這些錯誤的能力。通過上機實踐,加深學(xué)生對計算機軟件運行環(huán)境,以及對操作系統(tǒng)與計算機語言支持系
4、統(tǒng)相互關(guān)系的了解。</p><p> 3、熟悉Java開發(fā)工具,運行java應(yīng)用程序和小程序;掌握Java程序的編輯、編譯、運行。掌握各種數(shù)據(jù)類型及其使用方法;掌握表達式的組成;理解定義變量的作用,掌握定義變量的方法;掌握各種運算符的使用及其優(yōu)先級控制。學(xué)習(xí)結(jié)構(gòu)化程序設(shè)計的分支結(jié)構(gòu)及分支語句的使用;學(xué)習(xí)使用結(jié)構(gòu)化程序設(shè)計的循環(huán)結(jié)構(gòu)及循環(huán)語句的使用;掌握數(shù)組的使用方法,著重掌握二維數(shù)組,編寫使用二維數(shù)組的程序;掌
5、握常用字符串類、方法。</p><p> 4、學(xué)會類的定義和對象的使用;封裝、繼承、多態(tài)的應(yīng)用;如何創(chuàng)建包,編譯、運行包中的類;方法的覆蓋和重載;抽象類、接口、內(nèi)部類的使用。</p><p> 掌握異常處理的使用方法。著重掌握基本的GUI組件;掌握容器布局管理;掌握事件處理機制。</p><p><b> 二、實驗要求</b></p
6、><p> 計算器要有GUI界面,用戶可以輸入所需計算的數(shù)值,可以進行加、減、乘、除四種最基本的運算,可以求一個數(shù)值的平方及倒數(shù),可以進行階乘運算,要能運算小數(shù),并且不會產(chǎn)生精度損失,在必要情況下,可以進行四舍五入的運算。允許正負數(shù)間的運算。</p><p><b> 三、實驗內(nèi)容</b></p><p> 通過創(chuàng)建一個框架并在框架上加上適當(dāng)
7、的按鈕以及文本框并通過對按鈕設(shè)置監(jiān)聽器以達到進行運算的目的,由于對java知識掌握的不多還需要通過參閱書本來完成,我們小組有三個人,我負責(zé)做算法部分,其他兩人負責(zé)界面布局以及監(jiān)聽器的設(shè)置。在實驗過程中,我們共同合作每個人都參加了所有程序的編寫過程。</p><p><b> 四、實驗步驟</b></p><p> 1、首先要聲明包。主要用到了以下幾個包:</
8、p><p> import java.awt.*;</p><p> import java.awt.event.*;</p><p> import javax.swing.*;</p><p> 導(dǎo)入了包之后就可以運用包中的類了。</p><p><b> 2、創(chuàng)建框架。</b><
9、/p><p> 以下用BorderFrame類構(gòu)造frame函數(shù),然后設(shè)置框架的格式為最小化、最大化、關(guān)閉。然后show的作用是顯示該框架。</p><p> BorderFrame frame = new BorderFrame();</p><p> frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&l
10、t;/p><p> frame.show();</p><p> 3、編寫B(tài)orderFrame類,定義各個變量。</p><p> class BorderFrame extends JFrame implements ActionListener</p><p> 這里要用到ActionListener接口,是下面監(jiān)聽器所需要的。&l
11、t;/p><p> 定義變量例如下面代碼:</p><p> private JButton num0,dao,gen,ss,bac;</p><p> public double d,d11;</p><p> public double jieguo;</p><p> public boolean end
12、=true;</p><p> 而在實際編寫過程中我是用到一個定義一個。</p><p> 4、定義各組件,在框架上加入各種組件。</p><p> 接下來是定義按鈕num0=new JButton("0");括號里的即為按鈕顯示的信息。依次再創(chuàng)建23個按鈕。剛開始在BorderFrame()方法里我使用JButton num0=new J
13、Button("0")來定義按鈕,后來發(fā)現(xiàn)在actionPerformed方法里不能使用這些按鈕,所以要在BorderFrame這個類中定義,</p><p> JButton num0;這樣就能被BorderFrame類里的所有方法采用而不會出現(xiàn)未定義的錯誤。</p><p> 在布局的時候為了防止顏色單調(diào),將按鈕背景顏色設(shè)置為白色,采用setBackground
14、()方法,具體代碼如下:</p><p> num0.setBackground(Color.white);</p><p> 這樣依次設(shè)置12個按鈕,其他按鈕仍為默認顏色。</p><p> 接著創(chuàng)建buttons面板方法如下:</p><p> buttons=new JPanel();</p><p>
15、 接著把所有的按鈕加到buttons面板程序代碼如下:</p><p> buttons.add(num0);</p><p> 然后依次把所有按鈕加入即可。在布局的時候采用了setLayout 方式布局具體代碼如下:buttons.setLayout(new GridLayout(6,4,5,5));</p><p> 后面的四個數(shù)分別是6行4列,間隙的高5
16、寬5。這樣之后布局如下</p><p> 接著編寫文本框并將文本域設(shè)置為不可編輯,代碼如下</p><p> resultText= new JTextField("", 25);</p><p> resultText.setEnabled(false);</p><p> 然后將文本域加入到text面板中具體代
17、碼如下:</p><p> JPanel text=new JPanel();</p><p> text.add(resultText);</p><p> 之后再將面板加入到內(nèi)容窗格布局中具體代碼如下:</p><p> Container contentPane = getContentPane();</p>&l
18、t;p> contentPane.add(text, BorderLayout.NORTH);</p><p> contentPane.add(buttons, BorderLayout.CENTER);</p><p> 在計算器制作過程中為了使界面更加人性化,并為使用者提供一些制作信息我們小組特意加入了菜單欄。首先創(chuàng)建菜單欄并將菜單欄加入到框架中具體代碼如下:</p
19、><p> JMenuBar mainMenu = new JMenuBar();</p><p> setJMenuBar(mainMenu); </p><p> 接著創(chuàng)建三個主菜單名字分別為文件、顏色、作者具體代碼如下: </p><p> JMenu actMenu = new JMenu("文件"); <
20、;/p><p> JMenu setColorMenu = new JMenu("顏色");</p><p> JMenu aboutMenu = new JMenu("作者"); </p><p> mainMenu.add(actMenu);</p><p> mainMenu.add(setC
21、olorMenu);</p><p> mainMenu.add(aboutMenu); </p><p> 接下來分別向各個主菜單中加入子菜單具體代碼如下</p><p> tuichu = new JMenuItem("退出"); </p><p> actMenu.add(tuichu);</p>
22、<p> banquan = new JMenuItem("版權(quán)"); </p><p> aboutMenu.add(banquan);</p><p> chanpin = new JMenuItem("產(chǎn)品信息"); </p><p> aboutMenu.add(chanpin);</p&g
23、t;<p> hongse = new JMenuItem("紅色");</p><p> setColorMenu.add(hongse);</p><p> lanse = new JMenuItem("藍色");</p><p> setColorMenu.add(lanse);</p>
24、<p> huise = new JMenuItem("灰色");</p><p> setColorMenu.add(huise);</p><p> 菜單顯示如下圖所示:</p><p><b> 5、創(chuàng)建監(jiān)聽器</b></p><p> 每個按鈕都是事件源,我們對按鈕設(shè)置
25、監(jiān)聽器后,只要該按鈕發(fā)生一個事件(ActionEvent),listenter對象就是接到通知。</p><p> 我們設(shè)置監(jiān)聽器的方法如下所示:</p><p> num9.addActionListener(this);</p><p> num8.addActionListener(this);</p><p> num7.ad
26、dActionListener(this);</p><p> num6.addActionListener(this);</p><p> num5.addActionListener(this);</p><p> num4.addActionListener(this);</p><p> num3.addActionListe
27、ner(this);</p><p> num2.addActionListener(this);</p><p> num1.addActionListener(this);</p><p> num0.addActionListener(this);</p><p> plu.addActionListener(this);<
28、;/p><p> min.addActionListener(this);</p><p> mul.addActionListener(this);</p><p> div.addActionListener(this);</p><p> equ.addActionListener(this);</p><p&g
29、t; cle.addActionListener(this);</p><p> jiecheng.addActionListener(this);</p><p> youk.addActionListener(this);</p><p> dian.addActionListener(this);</p><p> zf.ad
30、dActionListener(this);</p><p> dao.addActionListener(this);</p><p> gen.addActionListener(this);</p><p> ss.addActionListener(this);</p><p> bac.addActionListener(t
31、his);</p><p> 在這里,所有的按鈕共享一個監(jiān)聽器對象。所以在actionPerformed方法中,必須判斷那個按鈕被按下,即事件源,可以通過EventObject類的getSource方法來判斷。</p><p> 接著對菜單也設(shè)置了監(jiān)聽器如下:</p><p> banquan.addActionListener(this);</p>
32、;<p> zhizuodi.addActionListener(this);</p><p> hongse.addActionListener(this);</p><p> lanse.addActionListener(this);</p><p> huise.addActionListener(this);</p>&
33、lt;p> tuichu.addActionListener(this);</p><p> chanpin.addActionListener(this);</p><p> 這樣所有的監(jiān)聽器就制作好了。</p><p> 6、編寫actionPerformed方法</p><p> 在actionPerformed方法里包
34、括了所有按鈕以及子菜單的點擊事件,包括了所有的算法。</p><p> 首先設(shè)置點banqun菜單后,將會彈出一個showConfirmDialo型對話框,里面的按鈕是</p><p> DEFAULT_OPTION類型,標(biāo)題是“版權(quán)雷神牌計算器”,對話框里的內(nèi)容是" 劉曉雷 </p><p> 20095406;李偉20095378;周洪芬2009
35、5379 "具體代碼如下:</p><p> if (source==banquan) </p><p><b> {</b></p><p> int selection=JOptionPane.showConfirmDialog(</p><p> BorderFrame.this,</p&
36、gt;<p> " 劉曉雷 20095406;李偉20095378;周洪芬20095379 ","版權(quán)雷神牌計算器",</p><p> JOptionPane.DEFAULT_OPTION);</p><p><b> } </b></p><p> 接著編寫chanpin菜單
37、即作者信息的事件,當(dāng)點擊作者信息時會彈出如下對話框:</p><p> 當(dāng)點擊確定后會彈出另一個對話框如圖:</p><p><b> 代碼如下</b></p><p> if (source==chanpin) </p><p><b> {</b></p><p>
38、; int selection=JOptionPane.showConfirmDialog(</p><p> BorderFrame.this,</p><p> " 雷神出品必為精品 ","雷神牌計算器",</p><p> JOptionPane.DEFAULT_OPTION);</p>&l
39、t;p><b> } </b></p><p> if (source==chanpin) </p><p><b> {</b></p><p> int selection=JOptionPane.showConfirmDialog(</p><p> BorderFrame
40、.this,</p><p> " 謝謝使用","雷神牌計算器",</p><p> JOptionPane.DEFAULT_OPTION);</p><p><b> }</b></p><p> 可以看出就是將source判斷兩次是否等于chanpin,這樣當(dāng)?shù)谝粋€對話
41、框執(zhí)行完之后就會彈出第二個對話框以達到效果。</p><p> 接著設(shè)置tuichu菜單的事件,當(dāng)點擊退出時會出現(xiàn)如下對話框:</p><p> 如果點擊了確定就會退出,點擊了撤銷就會回到原界面代碼如下:</p><p> if (source==tuichu) </p><p> { int selection = JOptionP
42、ane.showConfirmDialog(</p><p> BorderFrame.this,</p><p> "確定退出么?", "退出?", </p><p> JOptionPane.OK_CANCEL_OPTION,</p><p> JOptionPane.WARNING_MES
43、SAGE);</p><p> if (selection == JOptionPane.OK_OPTION)</p><p><b> {</b></p><p> System.exit(5);</p><p><b> }</b></p><p><b&g
44、t; }</b></p><p> System.exit(5)語句就是退出框架的意思,括號里的可以為任意值,消息類型為WARNING_</p><p> MESSAGE可以看出與上面兩個對話框不同的是對話框里有了警告的提示。</p><p> 設(shè)置完之后設(shè)置顏色菜單的事件如下:</p><p> if (source=
45、=lanse) </p><p> {buttons.setBackground(Color.blue);</p><p><b> } </b></p><p> if (source==hongse) </p><p> {buttons.setBackground(Color.red);</p&
46、gt;<p><b> } </b></p><p> if (source==huise) </p><p> {buttons.setBackground(Color.lightGray);</p><p><b> }</b></p><p> setBackgr
47、ound就是設(shè)置背景顏色的函數(shù),這樣就達到了改變背景顏色的目的。</p><p> 接下來就進入計算階段的編寫了,</p><p> 首先要達到點擊數(shù)字按鈕,文本框里會顯示數(shù)字如下所示:</p><p> if(source==num0)</p><p> {t=resultText.getText()+"0";r
48、esultText.setText(t);}</p><p> if(source==num1)</p><p> {t=resultText.getText()+"1";resultText.setText(t);}</p><p> if(source==num2)</p><p> {t=resultText
49、.getText()+"2";resultText.setText(t);}</p><p> if(source==num3)</p><p> {t=resultText.getText()+"3";resultText.setText(t);}</p><p> if(source==num4)</p>
50、<p> {t=resultText.getText()+"4";resultText.setText(t);}</p><p> if(source==num5)</p><p> {t=resultText.getText()+"5";resultText.setText(t);}</p><p>
51、if(source==num6)</p><p> {t=resultText.getText()+"6";resultText.setText(t);}</p><p> if(source==num7)</p><p> {t=resultText.getText()+"7";resultText.setText(t
52、);}</p><p> if(source==num8)</p><p> {t=resultText.getText()+"8";resultText.setText(t);}</p><p> if(source==num9)</p><p> {t=resultText.getText()+"9&
53、quot;;resultText.setText(t);}</p><p> resultText.getText()就是獲取文本框中的字符串,resultText.setText(t)就是使文本框中顯示字符串t;這樣就可以在文本框中輸入數(shù)字了如下圖所示:</p><p><b> 7、我的算法。</b></p><p> 接下來進行算法
54、的編寫,算法編寫主要是我編寫的,這些算法不是一下子就能想出來的,而是一步步不斷完善而成的,我相信如果有時間我會更加完善我的算法的。</p><p><b> 加法的代碼如下:</b></p><p> if(source==plu) </p><p> { if(z!=1)</p><p><b>
55、{c5=1;</b></p><p> c1=Double.parseDouble(resultText.getText().trim());</p><p> end=false;z=0;}</p><p><b> if(z==1)</b></p><p> {c5=1;c1=jieguo;<
56、;/p><p> z=0; } }</p><p> 這里z值就是判斷變量用來判斷=是否執(zhí)行過的,end就是用來清空文本框的,c5就是控制變量用來判斷是否執(zhí)行過+運算。</p><p><b> =的代碼如下:</b></p><p> if(source==equ) </p><
57、p> { if(c10!=0)</p><p><b> {</b></p><p> jieguo=1;for(int i=1;i<=c9;i++)</p><p> jieguo=i*jieguo;</p><p> t=(""+jieguo);c10=0;</p&g
58、t;<p><b> }</b></p><p> if(c5!=0.0) </p><p> {d=Double.parseDouble(resultText.getText().trim());</p><p> jieguo=c1+d;</p><p> t=(&qu
59、ot;"+jieguo);</p><p><b> c5=0;}</b></p><p> if(c6!=0.0) </p><p> {d=Double.parseDouble(resultText.getText().trim());</p><p> jieguo=c2-d;</p&
60、gt;<p> t=(""+jieguo);</p><p><b> c6=0;}</b></p><p> if(c7!=0.0)</p><p> {d=Double.parseDouble(resultText.getText().trim());</p><p> j
61、ieguo=c3*d;</p><p> t=(""+jieguo);</p><p><b> c7=0;}</b></p><p> if(c8!=0.0)</p><p> {d=Double.parseDouble(resultText.getText().trim());</p
62、><p> jieguo=c4/d;</p><p> t=(""+jieguo);</p><p><b> c8=0;}</b></p><p> if(c12!=0.0)</p><p> {d=Double.parseDouble(resultText.getTe
63、xt().trim());</p><p><b> jieguo=1;</b></p><p> for(int i=1;i<=d;i++)</p><p> jieguo=c11*jieguo;</p><p> t=(""+jieguo);</p><p>
64、<b> c12=0;}</b></p><p> end=false;</p><p> resultText.setText(t);</p><p><b> z=1;</b></p><p><b> }</b></p><p> 其中
65、從c5到c8還有c10都是控制變量用來判斷帶年紀過哪一個運算符。</p><p> 用一個加法來講解我的流程,點擊順序9+72=+3=</p><p> 首先點擊9這個按鈕,接著文本框中就會顯示9,點擊+后因為z初值為零,所以就獲取了文本框中的數(shù)值c1=9,然后控制變量c5=1,end=false。文本框中仍然顯示著9。接著進行下一個循環(huán),當(dāng)點擊按鈕時下一個循環(huán)才會進行也就是說看不到清
66、零過程,點7按鈕,接著有一個end=true語句,然后點擊2文本框中顯示72,然后點擊=號,此時執(zhí)行if語句中的c5!=0,d=72,結(jié)果=81,end=false,z=0,顯示81,當(dāng)點擊+時,c1=jieguo即81,end=false,點擊3繼續(xù)清零,文本框中顯示3,點=,結(jié)果就是84。</p><p> 還有一些其他的運算都很簡單,詳見源代碼。這樣就完成了計算器的編寫。</p><p
67、><b> 五、實驗結(jié)果</b></p><p> 輸入5.2執(zhí)行四舍五入運算</p><p><b> 求9+72+3結(jié)果</b></p><p> 點擊9+72=+3=</p><p> 點擊9,點擊完+號后:</p><p><b> 接著點
68、擊7</b></p><p><b> 點擊2</b></p><p><b> 點擊=</b></p><p><b> 接著點擊+3</b></p><p> 點擊加號的時候會出現(xiàn)清零過程,接著點擊=</p><p> 這樣就完
69、成了運算結(jié)果,</p><p> 點擊四舍五入按鈕后如下:</p><p><b> 文本編輯器</b></p><p><b> 一、實驗?zāi)康模?lt;/b></p><p> 綜合掌握Java編程技巧及Java開發(fā)環(huán)境。</p><p><b> 二、實驗要
70、求:</b></p><p> 可以設(shè)置文本的字體、大小、顏色等基本參數(shù),可以讀取計算機中TXT文件,可以生成一個新的TXT文件。其他功能參照windows的文本編輯器。</p><p><b> 三、實驗內(nèi)容</b></p><p> 通過創(chuàng)建一個框架并在框架上加上適當(dāng)?shù)牟藛螜谝约拔谋居虿⑼ㄟ^對菜單設(shè)置監(jiān)聽器以達到進行字體大
71、小顏色的控制,由于對java知識掌握的不多還需要通過參閱書本來完成,我們小組有三個人,我負責(zé)做算法部分,其他兩人負責(zé)界面布局以及監(jiān)聽器的設(shè)置。在實驗過程中,我們共同合作每個人都參加了所有程序的編寫過程。</p><p><b> 四、實驗步驟</b></p><p><b> 1、聲明包</b></p><p> i
72、mport java.awt.font.*;</p><p> import java.awt.*;</p><p> import java.awt.event.*;</p><p> import javax.swing.*;</p><p> import java.io.*;</p><p> 其中j
73、ava.io是提供輸入流輸出流控制。</p><p><b> 2、創(chuàng)建框架。</b></p><p> 以下用ListFrame類構(gòu)造frame函數(shù),然后設(shè)置框架的格式為最小化、最大化、關(guān)閉。然后show的作用是顯示該框架。</p><p> ListFrame frame = new ListFrame();</p>&
74、lt;p> frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);</p><p> frame.show();</p><p> 3、編寫ListFrame類,定義各個變量。</p><p> class ListFrame extends JFrame implements ActionList
75、ener</p><p> 這里要用到ActionListener接口,是下面監(jiān)聽器所需要的。</p><p><b> 定義并初始化如下:</b></p><p> public String dax[]={"5","10","15","20","
76、;25","30","35","40","..."};</p><p> 定義列表框并初始化:</p><p> public JComboBox box=new JComboBox(dax);</p><p> public static final int WIDTH
77、 =500;</p><p> public static final int HEIGHT = 450;</p><p> public static final String checkedLabel="You choosed: \nIndex, Course\n";</p><p> public String t=null;<
78、;/p><p> public JTextArea myTextArea;</p><p> private JList courseList;</p><p> private JPanel listPanel;</p><p> Dialog tanchu=new Dialog(this);</p><p>
79、 public Button que=new Button("確定");</p><p> public JCheckBoxMenuItem toolItem,statusItem ;</p><p> JLabel tishi=new JLabel("字體大小:");</p><p> public JMenuIte
80、m jianqie,niantie,fuzhi,banquan,hongse,lanse,huise,heise,tuichu,chengse,luse,shezhi,xinxi;</p><p> public JMenuItem zhizuodi,songti,heiti,kaiti,lishu,youyuan,dakai,baocun,lingcun,item11,item12,item13;</p
81、><p> FileDialog open=new FileDialog(this,"打開..");</p><p> FileDialog save=new FileDialog(this,"另存為..",FileDialog.SAVE);</p><p> int shifulingcun;</p><
82、;p> JPopupMenu menu;</p><p> 而在實際編寫過程中我是用到一個定義一個,而不是一起定義的。</p><p> 4、定義各組件,在框架上加入各種組件。</p><p> 創(chuàng)建文本域,并將文本域加入到滾動條中,創(chuàng)建面板,并將帶有文本域的滾動條加入到面板中,具體代碼如下:</p><p> Contain
83、er contentPane = getContentPane();</p><p> JPanel textPanel = new JPanel();</p><p> myTextArea = new JTextArea( 21, 43);</p><p> JScrollPane textScrollPane = new JScrollPane(myTe
84、xtArea);</p><p> textPanel.add(textScrollPane);</p><p> contentPane.add(textPanel);</p><p> 創(chuàng)建菜單欄,并創(chuàng)建四個主菜單,分別為四個主菜單設(shè)置快捷鍵</p><p> JMenuBar mainMenu = new JMenuBar();
85、</p><p> setJMenuBar(mainMenu); </p><p> JMenu actMenu = new JMenu("文件(A)"); </p><p> JMenu bianMenu = new JMenu("編輯(B)");</p><p> JMenu setColo
86、rMenu = new JMenu("顏色(S)");</p><p> JMenu aboutMenu = new JMenu("作者(C)"); </p><p> JMenu daxMenu = new JMenu("大小(D)"); </p><p> JMenu zitMenu = new
87、JMenu("字體(E)"); </p><p> actMenu.setMnemonic('A');</p><p> bianMenu.setMnemonic('B');</p><p> setColorMenu.setMnemonic('S');</p><p>
88、; aboutMenu.setMnemonic('C');</p><p> daxMenu.setMnemonic('D');</p><p> zitMenu.setMnemonic('E');</p><p> 定義子菜單并將子菜單加入到主菜單中并設(shè)置加速器:</p><p>
89、dakai = new JMenuItem("打開(L)"); </p><p> actMenu.add(dakai);</p><p> dakai.setAccelerator(KeyStroke.getKeyStroke(</p><p> KeyEvent.VK_L, InputEvent.CTRL_MASK));</p
90、><p> lingcun = new JMenuItem("另存為(Y)"); </p><p> 這個的加速器是Ctrl+L當(dāng)按下Ctrl+L時就是點擊了該子菜單。</p><p> actMenu.add(lingcun);</p><p> 創(chuàng)建單選框并將單選框加入到子菜單中:</p>&l
91、t;p> toolItem = new JCheckBoxMenuItem ("自動換行");</p><p> statusItem = new JCheckBoxMenuItem ("取消自動");</p><p> ButtonGroup group =new ButtonGroup();</p><p>
92、 group.add(toolItem);</p><p> group.add(statusItem);</p><p> optionMenu.add(toolItem);</p><p> optionMenu.add(statusItem);</p><p> bianMenu.add(optionMenu);</p&g
93、t;<p> 還有其他的許多子菜單的定義方法如上詳見源代碼。</p><p> 定義三個子菜單和一個彈出式菜單,將三個子菜單加入到彈出菜單中</p><p> item11=new JMenuItem("復(fù)制");</p><p> item12=new JMenuItem("粘貼");</p>
94、;<p> item13=new JMenuItem("剪切");</p><p> menu=new JPopupMenu();</p><p> menu.add(item11);</p><p> menu.add(item12);</p><p> menu.add(item13);<
95、/p><p><b> 5、設(shè)置鼠標(biāo)右鍵</b></p><p> 當(dāng)點擊鼠標(biāo)右鍵時彈出菜單:</p><p> myTextArea.addMouseListener(new MouseAdapter(){ </p><p> public void mousePressed(MouseEvent
96、 e){</p><p> if(e.getModifiers()==InputEvent.BUTTON3_MASK)</p><p> menu.show(myTextArea,e.getX(),e.getY());</p><p><b> } });</b></p><p><b> 6、設(shè)置監(jiān)
97、聽器</b></p><p> 每個按鈕都是事件源,我們對按鈕設(shè)置監(jiān)聽器后,只要該按鈕發(fā)生一個事件(ActionEvent),listenter對象就是接到通知。</p><p> 我們設(shè)置監(jiān)聽器的方法如下所示:</p><p> lingcun.addActionListener(this);</p><p> bao
98、cun.addActionListener(this);</p><p> tuichu.addActionListener(this);</p><p> dakai.addActionListener(this);</p><p> banquan.addActionListener(this);</p><p> xinx
99、i.addActionListener(this);</p><p> zhizuodi.addActionListener(this);</p><p> hongse.addActionListener(this);</p><p> lanse.addActionListener(this);</p><p>
100、; huise.addActionListener(this);</p><p> heise.addActionListener(this);</p><p> chengse.addActionListener(this);</p><p> luse.addActionListener(this);</p><p>
101、; zitMenu.addActionListener(this);</p><p> songti.addActionListener(this);</p><p> heiti.addActionListener(this);</p><p> kaiti.addActionListener(this);</p><p>
102、 lishu.addActionListener(this);</p><p> youyuan.addActionListener(this);</p><p> daxMenu.addActionListener(this);</p><p> shezhi.addActionListener(this);</p><p> j
103、ianqie.addActionListener(this);</p><p> niantie.addActionListener(this);</p><p> fuzhi.addActionListener(this);</p><p> 在這里,所有的按鈕共享一個監(jiān)聽器對象。所以在actionPerformed方法中,必須判斷那個按鈕被按下,即事件源,
104、可以通過EventObject類的getSource方法來判斷。接著對彈出菜單里的子菜單設(shè)置監(jiān)聽器:</p><p> item11.addActionListener(this);</p><p> item12.addActionListener(this);</p><p> item13.addActionListener(this);</p&g
105、t;<p> 7、設(shè)置作者菜單里的子菜單的點擊事件。</p><p> 當(dāng)點擊版權(quán)子菜單時,先彈出制作人信息,關(guān)閉對話框后,接著彈出感謝提示</p><p> if (source==banquan) </p><p><b> {</b></p><p> int selection=JOpti
106、onPane.showConfirmDialog(</p><p> ListFrame.this,</p><p> " 劉曉雷 20095406;李偉20095378;周洪芬20095379 ","版權(quán)",</p><p> JOptionPane.DEFAULT_OPTION);</p><
107、;p> } if (source==banquan) </p><p><b> {</b></p><p> int selection=JOptionPane.showConfirmDialog(</p><p> ListFrame.this,</p><p> " 感謝觀看 &q
108、uot;,"版權(quán)",</p><p> JOptionPane.DEFAULT_OPTION);</p><p><b> }</b></p><p> 當(dāng)點擊信息時,彈出提示產(chǎn)品信息對話框,代碼如下:</p><p> if (source==xinxi) </p><p
109、><b> {</b></p><p> int selection=JOptionPane.showConfirmDialog(</p><p> ListFrame.this,</p><p> " 雷神牌記事本 \n 雷神出品必為精品 ","產(chǎn)品信息",</p><
110、p> JOptionPane.DEFAULT_OPTION);</p><p><b> } </b></p><p> 當(dāng)點擊zhizuodi時會提示制作地信息,具體代碼如下:</p><p> if (source==zhizuodi) </p><p><b> {</b>
111、</p><p> int selection=JOptionPane.showConfirmDialog(</p><p> ListFrame.this,</p><p> "合肥工業(yè)大學(xué)機房 ","地址",</p><p> JOptionPane.DEFAULT_OPTION);<
112、/p><p><b> }</b></p><p> 8、設(shè)置編輯菜單里的子菜單。</p><p> 首先設(shè)置兩個單選框,這里要用到自動換行的函數(shù).setLineWrap(true)就是自動換行,當(dāng)參數(shù)改成false時就不能自動換行了。具體代碼如下:</p><p> if (source==toolItem) &l
113、t;/p><p><b> {</b></p><p> myTextArea.setLineWrap(true);</p><p><b> }</b></p><p> if (source==statusItem) </p><p><b> {<
114、/b></p><p> myTextArea.setLineWrap(false); </p><p><b> } </b></p><p> 接著設(shè)置剪切,復(fù)制粘貼子菜單要用到.cut().copy().paste()函數(shù),具體代碼如下:</p><p> if (source==jianqie) &
115、lt;/p><p> {myTextArea.cut();} </p><p> if (source==fuzhi) </p><p> {myTextArea.copy();} </p><p> if (source==niantie) </p><p> { myTextA
116、rea.paste();</p><p><b> }</b></p><p> 9、設(shè)置顏色菜單的下拉菜單</p><p> 這里要用到.setForeground()函數(shù),當(dāng)設(shè)置完之后字的顏色就是后面參數(shù)里的顏色。</p><p> if (source==hongse) </p><p&
117、gt; {myTextArea.setForeground(Color.red); } </p><p> if (source==lanse) </p><p> {myTextArea.setForeground(Color.blue); } </p><p> if (source==huise) </p>
118、<p> {myTextArea.setForeground(Color.gray); } </p><p> if (source==chengse) </p><p> {myTextArea.setForeground(Color.orange); } </p><p> if (source==luse) </
119、p><p> {myTextArea.setForeground(Color.green); } </p><p> if (source==heise) </p><p> {myTextArea.setForeground(Color.black); }</p><p> 10、設(shè)置字體菜單的下拉菜單。</p>
120、<p> 這里一共設(shè)置了五種字體,首先設(shè)置字體要用獲得文本域中的格式用Font f=myTextArea.getFont();就可以獲得,然后在設(shè)置字體格式時只改變字體其他就可以用f.getStyle(),f.getSize())來表示。具體代碼如下:</p><p> if (source==songti) </p><p><b> { </b>
121、;</p><p> Font f=myTextArea.getFont();</p><p> myTextArea.setFont(new Font("宋體",f.getStyle(),f.getSize())); </p><p><b> } </b></p><p> if (
122、source==heiti) </p><p><b> { </b></p><p> Font f=myTextArea.getFont();</p><p> myTextArea.setFont(new Font("黑體",f.getStyle(),f.getSize())); </p>&
123、lt;p><b> } </b></p><p> if (source==kaiti) </p><p><b> { </b></p><p> Font f=myTextArea.getFont();</p><p> myTextArea.setFont(new
124、Font("楷體",f.getStyle(),f.getSize())); </p><p><b> } </b></p><p> if (source==lishu) </p><p><b> { </b></p><p> Font f=myT
125、extArea.getFont();</p><p> myTextArea.setFont(new Font("隸書",f.getStyle(),f.getSize())); </p><p> } </p><p> if (source==youyuan) </p><p>&l
126、t;b> { </b></p><p> Font f=myTextArea.getFont();</p><p> myTextArea.setFont(new Font("幼圓",f.getStyle(),f.getSize())); </p><p><b> }</b></p&g
127、t;<p> 11、設(shè)置文件下拉菜單里的功能。</p><p> 當(dāng)點擊退出時會彈出OK_CANCEL_OPTION形式的對話框,如果選擇的是ok就會退出框架,用到了System.exit(0)函數(shù)。具體代碼如下。</p><p> if (source==tuichu) </p><p> { int selection = JOptionP
128、ane.showConfirmDialog(</p><p> ListFrame.this,</p><p> "確定退出么?", "退出?", </p><p> JOptionPane.OK_CANCEL_OPTION,</p><p> JOptionPane.WARNING_MESSA
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- java程序課程設(shè)計--計算器編輯
- java課程設(shè)計---java計算器
- java課程設(shè)計--文本編輯器
- java課程設(shè)計---文本編輯器
- java課程設(shè)計---文本編輯器
- java課程設(shè)計---計算器
- java課程設(shè)計—計算器
- java課程設(shè)計計算器
- java計算器課程設(shè)計
- java課程設(shè)計--計算器
- java課程設(shè)計計算器
- 計算器java課程設(shè)計--簡單計算器
- java課程設(shè)計(文本編輯器)
- 虛擬的java編輯器課程設(shè)計報告
- java_計算器課程設(shè)計
- java課程設(shè)計-計算器系統(tǒng)
- java課程設(shè)計---科學(xué)計算器
- java課程設(shè)計報告—計算器
- java課程設(shè)計----簡易計算器
- java實現(xiàn)計算器課程設(shè)計
評論
0/150
提交評論