




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上Java程序設(shè)計課程設(shè)計報告題目:小小畫圖板開發(fā)廈門理工學(xué)院 數(shù)理系 09級 信計1班報告人姓名: 吳斌偉 實驗地點: 實驗樓4#416完成起止日期:2011.1.102011.1.13目錄一:程序設(shè)計的目的和意義二:程序設(shè)計: (一):程序基本組成框架和結(jié)構(gòu) (二):畫圖板相關(guān)操作三:系統(tǒng)功能設(shè)計分析四:程序結(jié)構(gòu)說明五:程序繪圖效果示意圖六:程序源代碼及其分析說明七:參考文獻小小畫圖板開發(fā)一 :程序設(shè)計的目的和意義用過微軟Windows操作系統(tǒng)的人一定都對Windows自帶的畫圖板非常的熟悉。同圖像處理軟件界的“大哥大”Photoshop比起來,它雖然不及Photo
2、shop的功能強大、內(nèi)容豐富,但是作為Windows一直以來都內(nèi)帶的附件程序,它具有小巧玲瓏、簡單實用等其它繪圖軟件所不具備的優(yōu)點。同時它的風(fēng)格也被許多其它繪圖軟件所效仿。通過本繪圖程序的編寫,我們可以看到如何運用自己已經(jīng)掌握的知識,自己動手來完成一個Java繪圖程序,通過整個流程的熟悉以及對程序組織結(jié)構(gòu)和框架的理解,也可以極大的促進我們對Java程序和面向?qū)ο蟪绦蛟O(shè)計的認(rèn)識和掌握。通過本次課程的學(xué)習(xí),我們可以更加系統(tǒng)地學(xué)習(xí)和了解如何從整體上設(shè)計和實現(xiàn)一個程序,這對我們今后學(xué)習(xí)、開發(fā)和設(shè)計更大更復(fù)雜的程序有著很大的幫助。二 :程序設(shè)計本程序完成的是一個類似于Windows畫圖板的繪圖程序。由于
3、不是開發(fā)和設(shè)計專業(yè)的繪圖和圖像制作軟件,所以,完成的程序的簡單功能包括以下幾項:1. 新建一個空白圖形文件:用于繪制新的圖形。2. 打開或保存一個圖形文件,便于對圖形文件的管理。3. 繪制一些基本的畫圖組件:直線、矩形、實心矩形、橢圓、實心橢圓、圓、實心圓、圓角矩形、實心圓角矩形等。4. 可以用鼠標(biāo)在繪圖面板上單擊拖動進行隨筆畫。5. 橡皮擦:可以將已繪制好的圖形擦掉。6. 添加文字:可以在繪圖區(qū)域內(nèi)添加文字。7. 選擇文字的字體:通過一個下拉式的選擇條,可以選中所需要的字體。本程序中包括:宋體、隸書、華文彩云、仿宋_GB2312、華文行楷、方正舒體、Times New Roman、Serif
4、、Monospaced、SonsSerif、Garamond。當(dāng)然,在下面的的程序分析中可以看到,由于我們靈活設(shè)置了字體數(shù)組,是的可以隨意添加系統(tǒng)支持的任何字體。大大方便和簡化了程序設(shè)計。8. 選擇文字的字體風(fēng)格:通過兩個復(fù)選框按鈕,可以選擇需要的字體風(fēng)格,包括:粗體、斜體,使用者有三種選擇方式,包括:同時選中兩者、只選擇其中一種、兩者都不選中。9. 設(shè)置畫筆的顏色:可以選擇當(dāng)前繪制圖形的畫筆顏色,讓圖形更加豐富多彩、生動活潑。10. 設(shè)置畫筆的粗細(xì):該選項在作用于基本圖形組件和文字時,它的效果是不一樣的。當(dāng)作用于繪制圖形組件時,它的作用是改變畫筆繪制線條的粗細(xì);當(dāng)作用于文字時,它的作用是改變
5、文字的大小。由此可以看到,雖然我們的畫圖板程序不及那些專業(yè)的繪圖程序,但是,“麻雀雖小,五臟俱全”,它已經(jīng)具備了一個繪圖軟件所應(yīng)該有的基本功能和操作。通過對本程序的分析,我們可以更加系統(tǒng)地學(xué)習(xí)和了解如何從整體上設(shè)計和實現(xiàn)一個程序。(一):程序基本組成框架和結(jié)構(gòu)1. 一組基本圖形按鈕,包括:Pencil(隨筆畫)、Line(直線)、Rect(矩形)、FRect(實心矩形)、Oval(橢圓)、FOval(實心橢圓)、Circle(圓)、FCircle(實心圓)、RoundRect(圓角矩形)、FrRect(實心圓角矩形)、Rubber(橡皮擦)、Word(文字)。這些基本圖形都繼承于同一個父類:d
6、rawings。drawings 具有變量(屬性):int x1,x2,y1,y2; /用來存放相應(yīng)圖形元素的坐標(biāo)int R,G,B; /用來存放圖形色彩顏色信息float stroke; /用來存放畫筆粗細(xì)int type; /用來保存圖形類型String s1; /用來保存輸入文字字符串String s2; /用來保存字體類型字符串同時,drawing還具有方法:void draw ( Graphics2D g2d ) ;draw()方法中用到了Java繪圖里面的Graphics2D類,所有繼承drawings類的圖形子類都重寫了此方法。這就是Java程序中類的繼承的概念。它對于程序代碼的
7、重用是很重要的,將極大的方便和簡略程序代碼。2. 此外,程序中還包括一下三個基本操作按鈕: 新建(New):新建一個圖形文件。 打開(Open):打開一個圖形文件。 保存(Save):保存當(dāng)前圖形文件。3. 選擇顏色和設(shè)置當(dāng)前畫筆粗細(xì)的按鈕分別為:顏色(Color)、線條粗細(xì)(Stroke)。4. 選擇當(dāng)前字體風(fēng)格的選擇框為:粗體(BOLD)、斜體(ITALIC),用以設(shè)置當(dāng)前字體的風(fēng)格。5. 選擇當(dāng)前字體的下拉式復(fù)選框為:Styles。6. 菜單條及其組成: 文件(File)菜單項,包括:New(新建一個圖形文件)、Load(打開一個圖形文件)、Save(保存當(dāng)前圖形文件)、Exit(退出程
8、序)。 顏色(Color)菜單項:用來設(shè)置當(dāng)前顏色。 線條粗細(xì)(Stroke)菜單項:用來設(shè)置當(dāng)前畫筆粗細(xì)。 幫助(Help)菜單項:有關(guān)的程序幫助提示。完成的程序界面效果如下圖:(二):畫圖板相關(guān)操作1. 新建一個圖形文件單擊工具欄上的圖標(biāo),或選擇FileNew菜單,則清除當(dāng)前所繪制的圖像,回到初始畫面。2. 打開已有的文件單擊工具欄上的圖標(biāo),或選擇FileLoad菜單,則清除當(dāng)前所繪制的圖像,并彈出打開文件對話框要求選擇要打開的文件。如下圖:3. 保存單擊工具欄上的圖標(biāo),或選擇FileSave菜單,則彈出要求保存文件對話框。如下圖:4. 繪制基本圖形基本圖形包括以下幾種:Pencil:隨筆
9、畫,圖標(biāo)為:。Line:直線,圖標(biāo)為:。Rect:矩形,圖標(biāo)為:。FRect:實心矩形,圖標(biāo)為:。Oval:橢圓,圖標(biāo)為:。FOval:實心橢圓,圖標(biāo)為:。Circle:圓,圖標(biāo)為:。FCircle:實心圓,圖標(biāo)為:。RoundRect:圓角矩形,圖標(biāo)為:。FrRect:實心圓角矩形,圖標(biāo)為:。Rubber:橡皮擦,圖標(biāo)為:。繪圖時,單擊工具欄上相應(yīng)圖形的圖標(biāo),然后用鼠標(biāo)拖動,在繪圖區(qū)域內(nèi)進行繪圖即可。5. 設(shè)置畫筆大小單擊工具欄上的圖標(biāo),或單擊StrokeSet Stroke菜單,則彈出相應(yīng)的設(shè)置當(dāng)前畫筆粗細(xì)對話框。如下圖:6. 選擇顏色單擊工具欄區(qū)域,或單擊ColorChoose Colo
10、r菜單,則彈出相應(yīng)的選擇當(dāng)前畫圖顏色對話框。如下圖:7. 選擇字體風(fēng)格在工具欄區(qū)域 ,可以選擇相應(yīng)的字體風(fēng)格,有粗體、斜體和粗斜體三種可供選擇。8. 選擇字體在工具欄區(qū)域,可以選擇字體,本程序中有如下幾種字體可供選擇:宋體、隸書、華文彩云、仿宋_GB2312、華文行楷、方正舒體、Time New Roman、Serif、Monospaced、SonsSerif、Garamond。三 :系統(tǒng)功能設(shè)計分析畫板主要由以下幾個部分組成:1. 主窗體的設(shè)計。主類(QingDrawPad)用來生成主界面,完成畫圖板的主要框架。主類由JFrame派生出來。主界面由菜單欄、工具欄和畫圖區(qū)域三部分組成,布局格式
11、采用BorderLayout布局形式。2. 菜單欄和工具欄的設(shè)計。菜單欄包括文件菜單欄、顏色菜單欄、線條粗細(xì)菜單欄和提示菜單欄。其中文件菜單欄包括文件的新建、打開、保存等選項;顏色菜單欄可以進行顏色選擇;線條粗細(xì)菜單欄設(shè)置線條的粗細(xì);提示菜單欄給出提示信息。工具欄由新建、打開和保存文件按鈕、基本圖形的按鈕、選擇字體風(fēng)格復(fù)選框和字體下拉列表框組成。在主類中添加并對菜單欄和工具欄添加事件監(jiān)聽。3. 事件響應(yīng)的處理。對菜單欄、工具欄和用鼠標(biāo)畫圖的事件響應(yīng)進行處理。 菜單欄中文件的新建、打開和保存菜單事件的處理:Java把每個文件都視作順序字節(jié)流。如果要在Java中進行文件處理,則必須用到Java.i
12、o包。這個包定義了一些流類,選用FileInputStream(從文件中讀入數(shù)據(jù))和FIleOutputStream(向文件輸出數(shù)據(jù)),通過建立這些文件的對象便可以打開文件。這些流相應(yīng)地從InputStream和OutputStream派生,這些文件均使用文件流,所以必須將文件結(jié)構(gòu)化以適應(yīng)程序的要求。我們需要對保存的對象序列化,然后以輸出流的方式保存。在程序中用newFile()、loadFile()和saveFile()三個函數(shù)分別實現(xiàn)文件的新建、打開和保存。 工具欄事件的處理:主要有一些Button組成。我們用ButtonHandler內(nèi)部類處理基本單元事件,ButtonHandler1內(nèi)
13、部類處理新建、打開和保存文件按鈕,在畫圖類DrawPanel中定義CreateNewItem()函數(shù)處理工具欄中的畫圖事件。 鼠標(biāo)畫圖:由于畫圖板主要是用來畫圖,所以需要在程序中添加對鼠標(biāo)按下、拖動、進入、退出、移動和單機事件進行監(jiān)聽并進行處理。內(nèi)部類mouseA定義了完成鼠標(biāo)按下、松開、進入、退出事件響應(yīng)。內(nèi)部類mouseB完成鼠標(biāo)拖動和移動事件響應(yīng)。4. 畫圖的基本功能。在程序設(shè)計中用到了動態(tài)綁定,我們可以提取他們的公共屬性,先建立一個父類,然后建立各個子類,繼承父類中的方法并將父類中的draw函數(shù)重寫。一些關(guān)于圖形形狀的類,最主要是用于畫圖、字體和橡皮擦等基本類型。如Circle、Tri
14、angle、Rectangle,它們都是有超類(Object類)派生的。在面向?qū)ο缶幊讨?,每個類都有畫出自己的能力,每個類都有自己的draw函數(shù),但每種形狀的draw函數(shù)都不一樣,但在繪制任何形狀時,只需簡單調(diào)用父類drawing的draw方法,然后讓程序動態(tài)地根據(jù)對象的類型決定使用哪個子類的draw方法。為了使畫出的圖形更加美觀,我們在draw函數(shù)中使用了Graphics2D的對象的引用。這樣可以在不改變原程序的情況下,添加擴展的圖形,是程序變得更加強大。同時,為了文件的保存,父類實現(xiàn)Serialize接口,將對象線性化。四 :程序結(jié)構(gòu)說明本程序主體為一個文件:QingDrawPad.jav
15、a。其中包括的程序段有: QingDrawPad():構(gòu)造函數(shù),用以初始化。 chooseColor():選擇當(dāng)前繪圖顏色程序段。 setStroke():設(shè)置當(dāng)前畫筆粗細(xì)程序段。 loadFile():調(diào)用圖形文件程序段。 newFile():新建一個圖形文件程序段。 saveFile():保存當(dāng)前所繪制圖形程序段。 creatNewItem():新建一個基本圖形單元程序段。相應(yīng)的內(nèi)部類有: ButtonHandler:用來處理基本圖形單元的按鈕事件。 ButtonHandler1:用來處理New、Open、Save三個操作按鈕的按鈕事件。 DrawPanel:用來創(chuàng)建繪圖區(qū)域的子類。 Mo
16、useA:繼承了MouseAdapter,用來完成鼠標(biāo)相應(yīng)事件的操作,如單擊、松開、進入和離開等。 MouseB:繼承了MouseMotionAdapter,用來完成鼠標(biāo)拖動和鼠標(biāo)移動的相應(yīng)事件操作。此外,還繼承了父類drawings的基本圖形子類,如前所述,這里不再重復(fù)。五 :程序繪圖效果示意圖我們可以看到,整個程序界面很簡潔,而且界面操作、提示內(nèi)容全部是中文,一目了然。在左上方的菜單欄里有文件、顏色、線條粗細(xì)、幫助4個下拉式菜單,可以對繪圖文件進行相應(yīng)的操作。下面一排是工具欄的工具按鈕,從左到右依次為:新建文件、打開文件、保存文件、隨筆畫、直線、空心矩形、實心矩形、空心橢圓、空心圓、實心圓
17、、空心圓角矩形、實心圓角矩形、橡皮擦、顏色選擇按鈕、線條粗細(xì)設(shè)置按鈕、文字添加按鈕、粗體字體選擇框、斜體字體選擇框、字體選擇下拉式選擇框。整個工具欄是可以拖動的,可以將它拖動到程序窗口的任意位置。工具欄下面的整個白色區(qū)域就是繪圖區(qū)域,即繪圖面板,它的大小可以隨著窗口的大小自動調(diào)整。在窗口的最底部是程序設(shè)計作者標(biāo)注,以及鼠標(biāo)狀態(tài)提示條,可以顯示當(dāng)前的鼠標(biāo)狀態(tài),包括進出窗口、移動、單擊、松開等。具體效果如下列圖所示: 六 :程序源代碼及其分析說明/*File name : QingDrawPad (卿畫板)Copyright by : Ken (吳斌偉)Direct by : 郭成Dept : 廈
18、門理工學(xué)院 數(shù)理系 09級 信息與計算科學(xué)1班Date :2011.01.11Version :建發(fā)2011*/package WuDrawPad;import java.awt.*;import java.awt.geom.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import java.util.*;public class QingDrawPad extends JFrame /主類,擴展了JFrame類,用來生成主界面 private ObjectInputStream input; private
19、ObjectOutputStream output; /定義輸入輸出流,用來調(diào)用和保存圖像文件 private JButton choices; /按鈕數(shù)組,存放以下名稱的功能按鈕 private String names = "New", "Open", "Save", /這三個是基本操作按鈕,包括"新建"、"打開"、"保存" /*下面是我們的畫圖板上面有的基本的幾個繪圖單元按鈕*/ "Pencil", "Line", "R
20、ect", "FRect", "Oval", "FOval", "Circle", "FCircle", "RoundRect", "FrRect", "Rubber", "Color", "Stroke", "Word" ; private String styleNames= " 宋體 " , " 隸書 " , "
21、 華文彩云 " , " 仿宋_GB2312 " , " 華文行楷 " , " 方正舒體 " , " Times New Roman " , " Serif " , " Monospaced " , " SonsSerif " , " Garamond " ; private Icon items; private String tipText= /這里是鼠標(biāo)移動到相應(yīng)按鈕上面上停留時給出的提示說明條 "新建一個文件&
22、quot;, "打開一個文件", "保存當(dāng)前文件", "繪制線條", "繪制直線", "繪制空心矩形", "繪制實心矩形", "繪制空心橢圓", "繪制實心橢圓", "繪制空心圓形", "繪制實心圓形", "繪制空心圓角矩形", "繪制實心圓角矩形", "橡皮擦", "選擇顏色", "設(shè)置線條粗細(xì)"
23、, "輸入文字" ; JToolBar buttonPanel ; /定義按鈕面板 private JLabel statusBar; /顯示鼠標(biāo)狀態(tài)的提示條 private DrawPanel drawingArea; /畫圖區(qū)域 private int width=850,height=550; drawings itemList=new drawings5000; /用來存放基本圖形的數(shù)組 private int currentChoice=3; /設(shè)置默認(rèn)畫圖狀態(tài)為隨筆畫 int index=0; /當(dāng)前已經(jīng)繪制的圖形數(shù)目 private Color color=C
24、olor.black; /當(dāng)前畫筆顏色 int R,G,B; /用來存放當(dāng)前色彩值 int f1,f2; /用來存放當(dāng)前字體風(fēng)格 String style1; /用來存放當(dāng)前字體 private float stroke=1.0f; /設(shè)置畫筆粗細(xì),默認(rèn)值為1.0f JCheckBox bold,italic; /bold為粗體,italic為斜體,二者可以同時使用 JComboBox styles; public QingDrawPad() super("卿樂繪圖畫板(中國風(fēng))"); JMenuBar bar=new JMenuBar();/定義菜單條 JMenu fil
25、eMenu=new JMenu("文件"); /fileMenu.setMnemonic('F');/新建文件菜單條 JMenuItem newItem=new JMenuItem("新建"); newItem.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) newFile();/如果被觸發(fā),則調(diào)用新建文件函數(shù)段 ); fileMenu.add(newItem);/保存文件菜單項 JMenuItem saveItem=ne
26、w JMenuItem("保存"); saveItem.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) saveFile();/如果被觸發(fā),則調(diào)用保存文件函數(shù)段 ); fileMenu.add(saveItem);/打開文件菜單項 JMenuItem loadItem=new JMenuItem("打開"); loadItem.addActionListener( new ActionListener() public void acti
27、onPerformed(ActionEvent e) loadFile();/如果被觸發(fā),則調(diào)用打開文件函數(shù)段 ); fileMenu.add(loadItem); fileMenu.addSeparator();/退出菜單項 JMenuItem exitItem=new JMenuItem("退出"); exitItem.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) System.exit(0);/如果被觸發(fā),則退出畫圖板程序 ); fileMenu.a
28、dd(exitItem); bar.add(fileMenu);/設(shè)置顏色菜單條 JMenu colorMenu=new JMenu("顏色");/選擇顏色菜單項 JMenuItem colorItem=new JMenuItem("選擇顏色"); colorItem.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) chooseColor();/如果被觸發(fā),則調(diào)用選擇顏色函數(shù)段 ); colorMenu.add(colorItem); b
29、ar.add(colorMenu);/設(shè)置線條粗細(xì)菜單條 JMenu strokeMenu=new JMenu("線條粗細(xì)");/設(shè)置線條粗細(xì)菜單項 JMenuItem strokeItem=new JMenuItem("設(shè)置線條粗細(xì)"); strokeItem.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) setStroke(); ); strokeMenu.add(strokeItem); bar.add(strokeMenu);/
30、設(shè)置提示菜單條 JMenu helpMenu=new JMenu("幫助");/設(shè)置提示菜單項 JMenuItem aboutItem=new JMenuItem("關(guān)于畫板"); aboutItem.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) JOptionPane.showMessageDialog(null, "卿樂畫板n作者:吳斌偉n指導(dǎo)教師:郭成n于2011年1月11日,廈門理工學(xué)院 數(shù)理系 實驗樓4#416 &q
31、uot;, " 畫圖板說明 ", JOptionPane.INFORMATION_MESSAGE ); ); helpMenu.add(aboutItem); bar.add(helpMenu); items=new ImageIconnames.length;/創(chuàng)建各種基本圖形的按鈕 drawingArea=new DrawPanel(); choices=new JButtonnames.length; buttonPanel = new JToolBar( JToolBar.VERTICAL ) ; buttonPanel = new JToolBar( JToolB
32、ar.HORIZONTAL) ; ButtonHandler handler=new ButtonHandler(); ButtonHandler1 handler1=new ButtonHandler1();/導(dǎo)入我們需要的圖形圖標(biāo),這些圖標(biāo)都存放在與源文件相同的目錄下面 for(int i=0;i<choices.length;i+) itemsi=new ImageIcon(namesi + ".gif"); choicesi=new JButton("",itemsi); choicesi.setToolTipText(tipTexti);
33、 buttonPanel.add(choicesi); /將動作偵聽器加入按鈕里面 for(int i=3;i<choices.length-3;i+) choicesi.addActionListener(handler); choices0.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) newFile(); ); choices1.addActionListener( new ActionListener() public void actionPerformed(
34、ActionEvent e) loadFile(); ); choices2.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) saveFile(); ); choiceschoices.length-3.addActionListener(handler1); choiceschoices.length-2.addActionListener(handler1); choiceschoices.length-1.addActionListener(handler1);/字體風(fēng)格
35、選擇 styles=new JComboBox(styleNames); styles.setMaximumRowCount(8); styles.addItemListener( new ItemListener() public void itemStateChanged(ItemEvent e) style1=styleNamesstyles.getSelectedIndex(); );/字體選擇 bold=new JCheckBox("粗體"); italic=new JCheckBox("斜體"); checkBoxHandler cHandl
36、er=new checkBoxHandler(); bold.addItemListener(cHandler); italic.addItemListener(cHandler); JPanel wordPanel=new JPanel(); buttonPanel.add(bold); buttonPanel.add(italic); buttonPanel.add(styles); styles.setMinimumSize( new Dimension ( 50, 20 ) ); styles.setMaximumSize(new Dimension ( 100, 20 ) ); Co
37、ntainer c=getContentPane(); super.setJMenuBar( bar ); c.add(buttonPanel,BorderLayout.NORTH); c.add(drawingArea,BorderLayout.CENTER); statusBar=new JLabel(); c.add(statusBar,BorderLayout.SOUTH); statusBar.setText(" 歡迎使用卿樂繪圖畫板O(_)O作者:吳斌偉指導(dǎo)教師:郭成"); createNewItem(); setSize(width,height); show
38、(); /按鈕偵聽器ButtonHanler類,內(nèi)部類,用來偵聽基本按鈕的操作public class ButtonHandler implements ActionListener public void actionPerformed(ActionEvent e) for(int j=3;j<choices.length-3;j+) if(e.getSource()=choicesj) currentChoice=j; createNewItem(); repaint(); /按鈕偵聽器ButtonHanler1類,用來偵聽顏色選擇、畫筆粗細(xì)設(shè)置、文字輸入按鈕的操作public cl
39、ass ButtonHandler1 implements ActionListener public void actionPerformed(ActionEvent e) if(e.getSource()=choiceschoices.length-3) chooseColor(); if(e.getSource()=choiceschoices.length-2) setStroke(); if(e.getSource()=choiceschoices.length-1) JOptionPane.showMessageDialog(null, "請點擊繪圖板選擇輸入文本的位置&
40、quot;, "提示",JOptionPane.INFORMATION_MESSAGE ); currentChoice=14; createNewItem(); repaint(); /鼠標(biāo)事件mouseA類,繼承了MouseAdapter,用來完成鼠標(biāo)相應(yīng)事件操作 class mouseA extends MouseAdapter public void mousePressed(MouseEvent e) statusBar.setText(" 作者:吳斌偉廈門理工學(xué)院數(shù)理系09級信計1班鼠標(biāo)按下位置:" + e.getX() + ",
41、" + e.getY() + "");/設(shè)置狀態(tài)提示 itemListindex.x1=itemListindex.x2=e.getX(); itemListindex.y1=itemListindex.y2=e.getY(); /如果當(dāng)前選擇的圖形是隨筆畫或者橡皮擦,則進行下面的操作 if(currentChoice=3|currentChoice=13) itemListindex.x1=itemListindex.x2=e.getX(); itemListindex.y1=itemListindex.y2=e.getY(); index+; createNe
42、wItem(); /如果當(dāng)前選擇的圖形式文字輸入,則進行下面操作 if(currentChoice=14) itemListindex.x1=e.getX(); itemListindex.y1=e.getY(); String input; input=JOptionPane.showInputDialog( "請輸入你想要輸入的文本"); itemListindex.s1=input; itemListindex.x2=f1; itemListindex.y2=f2; itemListindex.s2=style1; index+; currentChoice=14;
43、createNewItem(); drawingArea.repaint(); public void mouseReleased(MouseEvent e) statusBar.setText(" 作者:吳斌偉廈門理工學(xué)院數(shù)理系09級信計1班鼠標(biāo)松開位置:" + e.getX() + ", " + e.getY() + ""); if(currentChoice=3|currentChoice=13) itemListindex.x1=e.getX(); itemListindex.y1=e.getY(); itemListinde
44、x.x2=e.getX(); itemListindex.y2=e.getY(); repaint(); index+; createNewItem(); public void mouseEntered(MouseEvent e) statusBar.setText(" 作者:吳斌偉廈門理工學(xué)院數(shù)理系09級信計1班鼠標(biāo)進入位置:" + e.getX() + ", " + e.getY() + ""); public void mouseExited(MouseEvent e) statusBar.setText(" 作者:
45、吳斌偉廈門理工學(xué)院數(shù)理系09級信計1班鼠標(biāo)退出位置:" + e.getX() + ", " + e.getY() + ""); /鼠標(biāo)事件mouseB類繼承了MouseMotionAdapter,用來完成鼠標(biāo)拖動和鼠標(biāo)移動時的相應(yīng)操作 class mouseB extends MouseMotionAdapter public void mouseDragged(MouseEvent e) statusBar.setText(" 作者:吳斌偉廈門理工學(xué)院數(shù)理系09級信計1班鼠標(biāo)拖動位置:" + e.getX() + &quo
46、t;, " + e.getY() + ""); if(currentChoice=3|currentChoice=13) itemListindex-1.x1=itemListindex.x2=itemListindex.x1=e.getX(); itemListindex-1.y1=itemListindex.y2=itemListindex.y1=e.getY(); index+; createNewItem(); else itemListindex.x2=e.getX(); itemListindex.y2=e.getY(); repaint(); pub
47、lic void mouseMoved(MouseEvent e) statusBar.setText(" 作者:吳斌偉廈門理工學(xué)院數(shù)理系09級信計1班鼠標(biāo)移動位置:" + e.getX() + ", " + e.getY() + ""); /選擇字體風(fēng)格時候用到的事件偵聽器類,加入到字體風(fēng)格的選擇框中private class checkBoxHandler implements ItemListener public void itemStateChanged(ItemEvent e) if(e.getSource()=bold) if(e.getStateChange()=ItemEvent.SELECTED) f1=Font.BOLD; else f1=Font.PLAIN; if(e.getSource()=italic) if
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度退股及員工持股計劃合同
- 個人股權(quán)轉(zhuǎn)讓合同2025年度含業(yè)績對賭條款
- 二零二五年度臨時項目經(jīng)理職務(wù)聘用與成果轉(zhuǎn)化合同
- 二零二五年度旅游團隊保險責(zé)任免除聲明
- 電線電纜購銷合同
- 管理層勞動合同工資
- 個人數(shù)字資產(chǎn)管理協(xié)議
- 全新池塘出租協(xié)議
- 月餅產(chǎn)品代銷合同
- 鄉(xiāng)村旅游發(fā)展策略與實施方案
- 2025年中央一號文件高頻重點考試題庫150題(含答案解析)
- 接觸隔離標(biāo)準(zhǔn)操作流程
- 港股基礎(chǔ)知識
- 2025年溫州市甌海旅游投資集團有限公司下屬子公司招聘筆試參考題庫附帶答案詳解
- 2025年天津三源電力集團有限公司招聘筆試參考題庫含答案解析
- 2025年上半年浙江嘉興桐鄉(xiāng)市水務(wù)集團限公司招聘10人易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年腹腔穿刺術(shù)課件 (1)2
- (八省聯(lián)考)2025年高考綜合改革適應(yīng)性演練 物理試卷合集(含答案逐題解析)
- 2024年干式電力電容器項目可行性研究報告
- 河南12系列建筑設(shè)計圖集一(12YJ1)
- 2025年度智能倉儲管理系統(tǒng)軟件開發(fā)合同6篇
評論
0/150
提交評論