Java畫(huà)圖板程序設(shè)計(jì)報(bào)告_第1頁(yè)
Java畫(huà)圖板程序設(shè)計(jì)報(bào)告_第2頁(yè)
Java畫(huà)圖板程序設(shè)計(jì)報(bào)告_第3頁(yè)
Java畫(huà)圖板程序設(shè)計(jì)報(bào)告_第4頁(yè)
Java畫(huà)圖板程序設(shè)計(jì)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩43頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、西安科技大學(xué)Java語(yǔ)言課程設(shè)計(jì)報(bào)告題目: 畫(huà)圖板應(yīng)用程序開(kāi)發(fā) 班級(jí): 學(xué)號(hào): 姓名: 2010年 12 月目 錄1 設(shè)計(jì)題目及具體要求32 總體設(shè)計(jì)63 詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)44 系統(tǒng)測(cè)試115 設(shè)計(jì)小結(jié)31參考文獻(xiàn)1、設(shè)計(jì)題目及具體要求 1.1 題目需求1. 設(shè)計(jì)題目:小畫(huà)圖板的開(kāi)發(fā)。2. 重點(diǎn)分析本軟件的重難點(diǎn)為主窗體的設(shè)計(jì)、菜單欄和工具欄的設(shè)計(jì)、事件響應(yīng)的處理、畫(huà)圖的基本功能的實(shí)現(xiàn)。3. 實(shí)現(xiàn)功能1 新建一個(gè)空白圖形文件:用于繪制新的圖形。2 打開(kāi)或保存一個(gè)圖形文件,便于對(duì)圖形文件的管理。3 繪制一些基本的圖形組件:直線,矩形,實(shí)心矩形,橢圓,實(shí)心橢圓,圓,實(shí)心圓,圓角矩形,實(shí)心圓角矩形等。

2、4 用鼠標(biāo)在繪圖板上單擊拖動(dòng)進(jìn)行隨筆花。5 橡皮擦:可以將已繪制的圖形擦掉。6 添加文字:可以在繪圖區(qū)域內(nèi)添加文字。7 選擇文字的字體:通過(guò)一個(gè)下拉式的選擇條,可以選中所需要的字體。本程序中包括:宋體,隸書(shū),華文彩云,仿宋-GB2312,華文行楷,Times New Roman,Serif,Monospaced,SonsSerif,Garamond。當(dāng)然,在下面的程序分析中可以看到,由于設(shè)置了字體選擇數(shù)組,使得可以隨意添加系統(tǒng)支持的任何字體。大大方便和簡(jiǎn)化了程序設(shè)計(jì)。8 選擇文字的字體風(fēng)格:通過(guò)兩個(gè)復(fù)選框按鈕,可以選擇需要的字體風(fēng)格,包括:粗體,斜體,用同時(shí)選中兩者,只選擇其中一種或兩者都不選

3、中3種選擇方式。9 設(shè)置畫(huà)筆的顏色:可以選擇當(dāng)前繪制圖形的畫(huà)筆顏色,讓圖形更加豐富多彩,生動(dòng)活潑。10. 設(shè)置畫(huà)筆的粗細(xì):該選項(xiàng)在作用于基本圖形組件和文字時(shí),它的效果是不同的。當(dāng)作用于繪制圖形組建時(shí),它的作用是改變畫(huà)筆繪制線條的粗細(xì);當(dāng)作用于文字時(shí),它的作用是改變文字的大小。4. 功能圖圖1-1 畫(huà)圖板應(yīng)用程序功能結(jié)構(gòu)圖1.2 實(shí)現(xiàn)環(huán)境及工具簡(jiǎn)介CPU:Intel Core(TM)2 E5300 內(nèi)存:2G運(yùn)行平臺(tái):Windows XP 主頻:2.60GHz 開(kāi)發(fā)平臺(tái):Eclipse 主板:ASUSTeK Computer INC. P5QL-ASUS-SE Eclipse簡(jiǎn)介:Eclipse

4、IBM的Java IDE開(kāi)發(fā)環(huán)境IBM-Eclipse簡(jiǎn)介:Eclipse 是一個(gè)開(kāi)放源代碼的、基于 Java 的可擴(kuò)展開(kāi)發(fā)平臺(tái)。就其本身而言,它只是一個(gè)框架和一組服務(wù),用于通過(guò)插件組件構(gòu)建開(kāi)發(fā)環(huán)境。幸運(yùn)的是,Eclipse 附帶了一個(gè)標(biāo)準(zhǔn)的插件集,包括 Java 開(kāi)發(fā)工具(Java Development Tools,JDT)。IBM-Eclipse版本歷史:Eclipse最初是由IBM公司開(kāi)發(fā)的替代商業(yè)軟件Visual Age for Java的下一代IDE開(kāi)發(fā)環(huán)境,2001年11月貢獻(xiàn)給開(kāi)源社區(qū),現(xiàn)在它由非營(yíng)利軟件供應(yīng)商聯(lián)盟Eclipse基金會(huì)(Eclipse Foundation)管理

5、。 2003年,Eclipse 3.0選擇OSGi服務(wù)平臺(tái)規(guī)范為運(yùn)行時(shí)架構(gòu)。 2007年6月,穩(wěn)定版3.3發(fā)布。2008年6月發(fā)布代號(hào)為Ganymede的3.4版。2009年7月發(fā)布代號(hào)為GALILEO的3.5版。2010年6月發(fā)布代號(hào)為Helios的3.6版。IBM-Eclips語(yǔ)言拓展:Eclipse是著名的跨平臺(tái)的自由集成開(kāi)發(fā)環(huán)境(IDE)。最初主要用來(lái)Java語(yǔ)言開(kāi)發(fā),但是目前亦有人通過(guò)插件使其作為其他計(jì)算機(jī)語(yǔ)言比如C+和Python的開(kāi)發(fā)工具。Eclipse的本身只是一個(gè)框架平臺(tái),但是眾多插件的支持使得Eclipse擁有其他功能相對(duì)固定的IDE軟件很難具有的靈活性。許多軟件開(kāi)發(fā)商以E

6、clipse為框架開(kāi)發(fā)自己的IDE。Eclipse 最初由OTI和IBM兩家公司的IDE產(chǎn)品開(kāi)發(fā)組創(chuàng)建,起始于1999年4月。IBM提供了最初的Eclipse代碼基礎(chǔ),包括Platform、JDT 和PDE。目前由IBM牽頭,圍繞著Eclipse項(xiàng)目已經(jīng)發(fā)展成為了一個(gè)龐大的Eclipse聯(lián)盟,有150多家軟件公司參與到Eclipse項(xiàng)目中,其中包括Borland、Rational Software、Red Hat及Sybase等。Eclipse是一個(gè)開(kāi)發(fā)源碼項(xiàng)目,它其實(shí)是 Visual Age for Java的替代品,其界面跟先前的Visual Age for Java差不多,但由于其開(kāi)放源

7、碼,任何人都可以免費(fèi)得到,并可以在此基礎(chǔ)上開(kāi)發(fā)各自的插件,因此越來(lái)越受人們關(guān)注。近期還有包括Oracle在內(nèi)的許多大公司也紛紛加入了該項(xiàng)目,并宣稱Eclipse將來(lái)能成為可進(jìn)行任何語(yǔ)言開(kāi)發(fā)的IDE集大成者,使用者只需下載各種語(yǔ)言的插件即可。Eclipse 插件開(kāi)發(fā)環(huán)境雖然大多數(shù)用戶很樂(lè)于將 Eclipse 當(dāng)作 Java IDE 來(lái)使用,但 Eclipse 的目標(biāo)不僅限于此。Eclipse 還包括插件開(kāi)發(fā)環(huán)境(Plug-in Development Environment,PDE),這個(gè)組件主要針對(duì)希望擴(kuò)展 Eclipse 的軟件開(kāi)發(fā)人員,因?yàn)樗试S他們構(gòu)建與 Eclipse 環(huán)境無(wú)縫集成的工

8、具。由于 Eclipse 中的每樣?xùn)|西都是插件,對(duì)于給 Eclipse 提供插件,以及給用戶提供一致和統(tǒng)一的集成開(kāi)發(fā)環(huán)境而言,所有工具開(kāi)發(fā)人員都具有同等的發(fā)揮場(chǎng)所。基于 Eclipse 的應(yīng)用程序的突出例子是 IBM 的 WebSphere Studio Workbench,它構(gòu)成了 IBM Java 開(kāi)發(fā)工具系列的基礎(chǔ)。例如,WebSphere Studio Application Developer 添加了對(duì) JSP、servlet、EJB、XML、Web 服務(wù)和數(shù)據(jù)庫(kù)訪問(wèn)的支持。Eclipse的主要組成Eclipse是一個(gè)開(kāi)放源代碼的軟件開(kāi)發(fā)項(xiàng)目,專注于為高度集成的工具開(kāi)發(fā)提供一個(gè)全功能

9、的、具有商業(yè)品質(zhì)的工業(yè)平臺(tái)。它主要由Eclipse項(xiàng)目、Eclipse工具項(xiàng)目和Eclipse技術(shù)項(xiàng)目三個(gè)項(xiàng)目組成,具體包括四個(gè)部分組成Eclipse Platform、JDT、CDT和PDE。JDT支持Java開(kāi)發(fā)、CDT支持C開(kāi)發(fā)、PDE用來(lái)支持插件開(kāi)發(fā),Eclipse Platform則是一個(gè)開(kāi)放的可擴(kuò)展IDE,提供了一個(gè)通用的開(kāi)發(fā)平臺(tái)。它提供建造塊和構(gòu)造并運(yùn)行集成軟件開(kāi)發(fā)工具的基礎(chǔ)。Eclipse Platform允許工具建造者獨(dú)立開(kāi)發(fā)與他人工具無(wú)縫集成的工具從而無(wú)須分辨一個(gè)工具功能在哪里結(jié)束,而另一個(gè)工具功能在哪里開(kāi)始。Eclipse SDKEclipse SDK(軟件開(kāi)發(fā)者包)是E

10、clipse Platform、JDT和PDE所生產(chǎn)的組件合并,它們可以一次下載。這些部分在一起提供了一個(gè)具有豐富特性的開(kāi)發(fā)環(huán)境,允許開(kāi)發(fā)者有效地建造可以無(wú)縫集成到Eclipse Platform中的工具。Eclipse SDK由Eclipse項(xiàng)目生產(chǎn)的工具和來(lái)自其它開(kāi)放源代碼的第三方軟件組合而成。Eclipse項(xiàng)目生產(chǎn)的軟件以 GPL發(fā)布,第三方組件有各自自身的許可協(xié)議。2、總體設(shè)計(jì)2.1 基本圖形按鈕基本圖形按鈕包括:Pencil(隨筆畫(huà))、Line(直線)、Rect(矩形)、fRect(實(shí)心矩形)、Oval(橢圓)、fOval(實(shí)心橢圓)、Circle(圓)、fCircle(實(shí)心圓)、R

11、oundRect(圓角矩形)、frrect(實(shí)心圓角矩形)、Rubber(橡皮擦)、Word(字)?;緢D形都繼承自同一個(gè)父類:drawings。Drawings具有的變量(屬性):int x1, y1, x2, y2; /用來(lái)存放相應(yīng)圖形元素的左邊int R, G, B; /用來(lái)存放圖形色彩信息float stroke; /用來(lái)存放畫(huà)筆粗細(xì)int type; /用來(lái)保存圖形類型string s1; /用來(lái)保存輸入文字字符串string s2; /用來(lái)保存字體類型字符串同時(shí),drawings還有方法:Void draw(Graphics2D g2d) ;draw()方法中用到了java繪圖里面

12、的Graphics2D類,所有繼承drawings類的圖形子類都重寫(xiě)此方法。這就是Java中類繼承的概念。2.2 基本操作按鈕1. New:新建一個(gè)圖形文件。2. Open:打開(kāi)一個(gè)圖形文件。3. Save:保存當(dāng)前圖形文件。2.3 菜單及其組成1. File菜單項(xiàng),包括:New(新建一個(gè)圖形文件)、Load(打開(kāi)一個(gè)圖形文件)、Save(保存一個(gè)圖形文件)、Exit(退出程序)。2. Color菜單項(xiàng):用來(lái)設(shè)置當(dāng)前顏色。3. Stroke菜單項(xiàng):用來(lái)設(shè)置當(dāng)前畫(huà)筆粗細(xì)。4. Help菜單項(xiàng):有關(guān)的程序幫助提示。2.4 其他功能組成1. 選擇顏色和設(shè)置當(dāng)前畫(huà)筆粗細(xì)的按鈕分別為:Color、Str

13、oke。2. 選擇當(dāng)前字體風(fēng)格的選擇框?yàn)椋築OLD、ITALIC,用以設(shè)置當(dāng)前字體的風(fēng)格。3. 選擇當(dāng)前字體的下來(lái)是復(fù)選框?yàn)椋篠tyles。2.5 完成的程序界面圖為:圖2-1 完成的程序界面效果圖3、詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)3.1 新建一個(gè)圖形文件單擊工具欄上的圖標(biāo),或選擇File New菜單,則清除當(dāng)前所繪制的圖像,回到初始畫(huà)面,如圖4-1所示。3.2 打開(kāi)已有的文件單擊工具欄上的圖標(biāo),或選擇FileLoad菜單,則清除當(dāng)前所繪制的圖像,并彈出打開(kāi)文件對(duì)話框要求選擇打開(kāi)的文件,如圖5-1所示。圖3-1 選擇打開(kāi)文件對(duì)話框3.3 保存單擊工具欄上的圖標(biāo),或者選擇FileSave菜單,則彈出要求保存文件

14、對(duì)話框,如圖5-2所示。圖3-2 保存文件對(duì)話框3.4 繪制基本圖形基本圖形包括:1. Pencil:隨筆畫(huà),圖標(biāo)為。2. Line:直線,圖標(biāo)為。3. Rect:矩形,圖標(biāo)為。4. fRect:實(shí)心矩形,圖標(biāo)為。5. Oval:橢圓,圖標(biāo)為。6. fOval:實(shí)心橢圓,圖標(biāo)為。7. Circle:圓,圖標(biāo)為。8. Fcircle:實(shí)心圓,圖標(biāo)為。9. RoundRect:圓角矩形,圖標(biāo)為。10. frRect:實(shí)心圓角矩形,圖標(biāo)為。11. Rubber:橡皮擦,圖標(biāo)為。畫(huà)圖時(shí),單擊工具欄上相應(yīng)圖形的圖標(biāo),然后用鼠標(biāo)拖動(dòng),在繪圖區(qū)域內(nèi)進(jìn)行繪畫(huà)即可。3.5 設(shè)置畫(huà)筆大小單擊工具欄上的圖標(biāo),或者單

15、擊StrokeSet Stroke菜單,則彈出相應(yīng)的設(shè)置當(dāng)前畫(huà)筆粗細(xì)對(duì)話框,如圖5-3所示。 圖3-3 設(shè)置當(dāng)前畫(huà)筆粗細(xì)對(duì)話框3.6 選擇顏色 單擊工具欄上的圖標(biāo),或單擊ColorChoose Color菜單,則彈出相應(yīng)的選擇當(dāng)前畫(huà)圖顏色對(duì)話框,如圖5-4所示。圖3-4 選擇顏色對(duì)話框3.7 選擇字體風(fēng)格在工具欄區(qū)域,可以選擇相應(yīng)的字體風(fēng)格,有粗體和斜體兩種風(fēng)格可供選擇。3.8選擇字體 在工具欄區(qū)域,可以選擇字體,本程序中有如下幾種字體可供選擇:宋體,隸書(shū),華文彩云,仿宋-GB2312,華文行楷,Times New Roman,Serif,Monospaced,SonsSerif,Garamo

16、nd。3.9 程序結(jié)構(gòu)說(shuō)明本程序主體文件為一個(gè)文件:MiniDrawPad.Java。其中包括的程序段有:1. MiniDrawPad():構(gòu)造函數(shù),用以初始化。2. chooseColor():選擇當(dāng)前繪圖顏色程序段。3. setStroke():設(shè)置當(dāng)前畫(huà)筆粗細(xì)程序段。4. loadFile():調(diào)用圖形文件程序段。5. newFile():新建一個(gè)圖形文件程序段。6. saveFile():保存當(dāng)前所繪制圖形程序段。7. createNewItem():新建一個(gè)基本圖形單元程序段。相應(yīng)的內(nèi)部類有:1. ButtonHandler:用來(lái)處理基本圖形單元的按鈕事件。2. ButtonHand

17、ler1:用來(lái)處理New、Open、Save三個(gè)操作按鈕的按鈕事件。3. DrawPanel:用老創(chuàng)建繪圖區(qū)域的子類。4. MouseA:繼承了MouseAdapter,用來(lái)完成鼠標(biāo)相應(yīng)事件的操作,如單擊、松開(kāi)、進(jìn)入和離開(kāi)等。5. MouseB:繼承了MouseMotionAdapter,用來(lái)完成鼠標(biāo)拖動(dòng)和鼠標(biāo)移動(dòng)時(shí)的相應(yīng)操作。4、系統(tǒng)測(cè)試4.1 運(yùn)行結(jié)果1. 主界面框架主界面類繼承自JFrame類,包括構(gòu)造函數(shù)及各種功能的定義,主要代碼如下 :import java.awt.*;import java.awt.geom.*;import java.awt.event.*;import jav

18、ax.swing.*;import java.io.*;import java.util.*;public class MiniDrawPad extends JFrame /主類,擴(kuò)展了JFrame類,用來(lái)生成主界面 private ObjectInputStream input; private ObjectOutputStream output; /定義輸入輸出流,用來(lái)調(diào)用和保存圖像文件 private JButton choices; /按鈕數(shù)組,存放以下名稱的功能按鈕 private String names= New, Open, Save, /這三個(gè)是基本操作按鈕,包括新建、打開(kāi)

19、、保存 Pencil,/鉛筆畫(huà),也就是用鼠標(biāo)拖動(dòng)著隨意繪圖 Line,/繪制直線 Rect,/繪制空心矩形 fRect,/繪制以指定顏色填充的實(shí)心矩形 Oval,/繪制空心橢圓 fOval,/繪制以指定顏色填充的實(shí)心橢圓 Circle,/繪制圓形 fCircle,/繪制以指定顏色填充的實(shí)心圓形 RoundRect,/繪制空心圓角矩形 frRect,/繪制以指定顏色填充的實(shí)心圓角矩形 Rubber,/橡皮擦,可用來(lái)擦去已經(jīng)繪制好的圖案 Color,/選擇顏色按鈕,可用來(lái)選擇需要的顏色 Stroke,/選擇線條粗細(xì)的按鈕,輸入需要的數(shù)值可以實(shí)現(xiàn)繪圖線條粗細(xì)的變化 Word/輸入文字按鈕,可以在繪圖

20、板上實(shí)現(xiàn)文字輸入 ; private String styleNames= 宋體 , 隸書(shū) , 華文彩云 , 仿宋_GB2312 , 華文行楷 , 方正舒體 , Times New Roman , Serif , Monospaced , SonsSerif , Garamond ; /可供選擇的字體項(xiàng) private Icon items; private String tipText= /這里是鼠標(biāo)移動(dòng)到相應(yīng)按鈕上面上停留時(shí)給出的提示說(shuō)明條 Draw a new picture, Open a saved picture, Save current drawing, Draw at wil

21、l, Draw a straight line, Draw a rectangle, Fill a ractangle, Draw an oval, Fill an oval, Draw a circle, Fill a circle, Draw a round rectangle, Fill a round rectangle, Erase at will, Choose current drawing color, Set current drawing stroke, Write down what u want ; JToolBar buttonPanel ; /定義按鈕面板 priv

22、ate JLabel statusBar; /顯示鼠標(biāo)狀態(tài)的提示條 private DrawPanel drawingArea; /畫(huà)圖區(qū)域 private int width=800,height=550; /定義畫(huà)圖區(qū)域初始大小 drawings itemList=new drawings5000; /用來(lái)存放基本圖形的數(shù)組 private int currentChoice=3; /設(shè)置默認(rèn)畫(huà)圖狀態(tài)為隨筆畫(huà) int index=0; /當(dāng)前已經(jīng)繪制的圖形數(shù)目 private Color color=Color.black; /當(dāng)前畫(huà)筆顏色 int R,G,B; /用來(lái)存放當(dāng)前色彩值 in

23、t f1,f2; /用來(lái)存放當(dāng)前字體風(fēng)格 String style1; /用來(lái)存放當(dāng)前字體 private float stroke=1.0f; /設(shè)置畫(huà)筆粗細(xì),默認(rèn)值為1.0f JCheckBox bold,italic; /定義字體風(fēng)格選擇框 /bold為粗體,italic為斜體,二者可以同時(shí)使用 JComboBox styles; public MiniDrawPad() /構(gòu)造函數(shù) super(Drawing Pad); JMenuBar bar=new JMenuBar();/定義菜單條 JMenu fileMenu=new JMenu(File); fileMenu.setMnem

24、onic(F);2. 新建、保存、打開(kāi)、退出菜單項(xiàng)代碼如下:/新建文件菜單條 JMenuItem newItem=new JMenuItem(New); newItem.setMnemonic(N); newItem.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) newFile();/如果被觸發(fā),則調(diào)用新建文件函數(shù)段 ); fileMenu.add(newItem);/保存文件菜單項(xiàng) JMenuItem saveItem=new JMenuItem(Save); saveIt

25、em.setMnemonic(S); saveItem.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) saveFile();/如果被觸發(fā),則調(diào)用保存文件函數(shù)段 ); fileMenu.add(saveItem);/打開(kāi)文件菜單項(xiàng) JMenuItem loadItem=new JMenuItem(Load); loadItem.setMnemonic(L); loadItem.addActionListener( new ActionListener() public void

26、 actionPerformed(ActionEvent e) loadFile();/如果被觸發(fā),則調(diào)用打開(kāi)文件函數(shù)段 ); fileMenu.add(loadItem); fileMenu.addSeparator();/退出菜單項(xiàng) JMenuItem exitItem=new JMenuItem(Exit); exitItem.setMnemonic(X); exitItem.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) System.exit(0);/如果被觸發(fā),則退

27、出畫(huà)圖板程序 ); fileMenu.add(exitItem); bar.add(fileMenu);3. 線條寬度、顏色、提示功能代碼如下:/設(shè)置顏色菜單條 JMenu colorMenu=new JMenu(Color); colorMenu.setMnemonic(C);/選擇顏色菜單項(xiàng) JMenuItem colorItem=new JMenuItem(Choose Color); colorItem.setMnemonic(O); colorItem.addActionListener( new ActionListener() public void actionPerforme

28、d(ActionEvent e) chooseColor();/如果被觸發(fā),則調(diào)用選擇顏色函數(shù)段 ); colorMenu.add(colorItem); bar.add(colorMenu);/設(shè)置線條粗細(xì)菜單條 JMenu strokeMenu=new JMenu(Stroke); strokeMenu.setMnemonic(S);/設(shè)置線條粗細(xì)菜單項(xiàng) JMenuItem strokeItem=new JMenuItem(Set Stroke); strokeItem.setMnemonic(K); strokeItem.addActionListener( new ActionList

29、ener() public void actionPerformed(ActionEvent e) setStroke(); ); strokeMenu.add(strokeItem); bar.add(strokeMenu);/設(shè)置提示菜單條 JMenu helpMenu=new JMenu(Help); helpMenu.setMnemonic(H);/設(shè)置提示菜單項(xiàng) JMenuItem aboutItem=new JMenuItem(About this Drawing Pad!); aboutItem.setMnemonic(A); aboutItem.addActionListene

30、r( new ActionListener() public void actionPerformed(ActionEvent e) JOptionPane.showMessageDialog(null, This is a mini drawing pad!nBy Jian Yongkang , 畫(huà)圖板程序說(shuō)明 ,JOptionPane.INFORMATION_MESSAGE ); ); helpMenu.add(aboutItem); bar.add(helpMenu); items=new ImageIconnames.length;4. 工具欄圖形按鈕功能實(shí)現(xiàn) 創(chuàng)建基本圖形按鈕、導(dǎo)入圖

31、標(biāo)、加入動(dòng)作偵聽(tīng)器、字體風(fēng)格選擇、字體選擇、畫(huà)圖板等功能的實(shí)現(xiàn)。代碼如下:/創(chuàng)建各種基本圖形的按鈕 drawingArea=new DrawPanel(); choices=new JButtonnames.length; buttonPanel = new JToolBar( JToolBar.VERTICAL ) ; buttonPanel = new JToolBar( JToolBar.HORIZONTAL) ; ButtonHandler handler=new ButtonHandler(); ButtonHandler1 handler1=new ButtonHandler1()

32、;/導(dǎo)入圖形圖標(biāo),這些圖標(biāo)都存放在與源文件相同的目錄下面 for(int i=0;ichoices.length;i+) itemsi=new ImageIcon(namesi + .jpg); choicesi=new JButton(,itemsi); choicesi.setToolTipText(tipTexti); buttonPanel.add(choicesi); /將動(dòng)作偵聽(tīng)器加入按鈕里面 for(int i=3;ichoices.length-3;i+) choicesi.addActionListener(handler); choices0.addActionListen

33、er( new ActionListener() public void actionPerformed(ActionEvent e) newFile(); ); choices1.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) loadFile(); ); choices2.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) saveFile(); ); choi

34、ceschoices.length-3.addActionListener(handler1); choiceschoices.length-2.addActionListener(handler1); choiceschoices.length-1.addActionListener(handler1);/字體風(fēng)格選擇 styles=new JComboBox(styleNames); styles.setMaximumRowCount(8); styles.addItemListener( new ItemListener() public void itemStateChanged(It

35、emEvent e) style1=styleNamesstyles.getSelectedIndex(); );/字體選擇 bold=new JCheckBox(BOLD); italic=new JCheckBox(ITALIC); checkBoxHandler cHandler=new checkBoxHandler(); bold.addItemListener(cHandler); italic.addItemListener(cHandler); JPanel wordPanel=new JPanel(); buttonPanel.add(bold); buttonPanel.a

36、dd(italic); buttonPanel.add(styles); styles.setMinimumSize( new Dimension ( 50, 20 ) ); styles.setMaximumSize(new Dimension ( 100, 20 ) ); Container c=getContentPane(); super.setJMenuBar( bar ); c.add(buttonPanel,BorderLayout.NORTH); c.add(drawingArea,BorderLayout.CENTER); statusBar=new JLabel(); c.

37、add(statusBar,BorderLayout.SOUTH); statusBar.setText( Welcome To The Little Drawing Pad! :); createNewItem(); setSize(width,height); show(); /按鈕偵聽(tīng)器ButtonHanler類,內(nèi)部類,用來(lái)偵聽(tīng)基本按鈕的操作public class ButtonHandler implements ActionListener public void actionPerformed(ActionEvent e) for(int j=3;jchoices.length-

38、3;j+) if(e.getSource()=choicesj) currentChoice=j; createNewItem(); repaint(); /按鈕偵聽(tīng)器ButtonHanler1類,用來(lái)偵聽(tīng)顏色選擇、畫(huà)筆粗細(xì)設(shè)置、文字輸入按鈕的操作public class ButtonHandler1 implements ActionListener public void actionPerformed(ActionEvent e) if(e.getSource()=choiceschoices.length-3) chooseColor(); if(e.getSource()=choic

39、eschoices.length-2) setStroke(); if(e.getSource()=choiceschoices.length-1) JOptionPane.showMessageDialog(null, Please hit the drawing pad to choose the word input position, Hint,JOptionPane.INFORMATION_MESSAGE ); currentChoice=14; createNewItem(); repaint(); /鼠標(biāo)事件mouseA類,繼承了MouseAdapter,用來(lái)完成鼠標(biāo)相應(yīng)事件操作

40、 class mouseA extends MouseAdapter public void mousePressed(MouseEvent e) statusBar.setText( Mouse Pressed : + e.getX() + , + e.getY() + );/設(shè)置狀態(tài)提示 itemListindex.x1=itemListindex.x2=e.getX(); itemListindex.y1=itemListindex.y2=e.getY(); /如果當(dāng)前選擇的圖形是隨筆畫(huà)或者橡皮擦,則進(jìn)行下面的操作 if(currentChoice=3|currentChoice=13)

41、 itemListindex.x1=itemListindex.x2=e.getX(); itemListindex.y1=itemListindex.y2=e.getY(); index+; createNewItem(); /如果當(dāng)前選擇的圖形式文字輸入,則進(jìn)行下面操作 if(currentChoice=14) itemListindex.x1=e.getX(); itemListindex.y1=e.getY(); String input; input=JOptionPane.showInputDialog( Please input the text you want!); item

42、Listindex.s1=input; itemListindex.x2=f1; itemListindex.y2=f2; itemListindex.s2=style1; index+; currentChoice=14; createNewItem(); drawingArea.repaint(); public void mouseReleased(MouseEvent e) statusBar.setText( Mouse Released : + e.getX() + , + e.getY() + ); if(currentChoice=3|currentChoice=13) ite

43、mListindex.x1=e.getX(); itemListindex.y1=e.getY(); itemListindex.x2=e.getX(); itemListindex.y2=e.getY(); repaint(); index+; createNewItem(); public void mouseEntered(MouseEvent e) statusBar.setText( Mouse Entered : + e.getX() + , + e.getY() + ); public void mouseExited(MouseEvent e) statusBar.setTex

44、t( Mouse Exited : + e.getX() + , + e.getY() + ); class mouseB extends MouseMotionAdapter public void mouseDragged(MouseEvent e) statusBar.setText( Mouse Dragged : + e.getX() +, + e.getY() + ); if(currentChoice=3|currentChoice=13) itemListindex-1.x1=itemListindex.x2=itemListindex.x1=e.getX(); itemListindex-1.

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論