版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 計(jì)算機(jī)科學(xué)與技術(shù)系</b></p><p><b> 課程設(shè)計(jì)報(bào)告</b></p><p> 2011~2012學(xué)年第一學(xué)期</p><p><b> 2011年9月</b></p><p><b> 需求分析</b>
2、</p><p> 演示程序?yàn)橛脩艨梢杂卯嫻P畫出各種圖形,輸入文字,橡皮等各種功能,并且可以保存用戶編輯的圖片,可以打開(kāi)本地圖片,設(shè)置畫筆與面板背景的顏色。</p><p> ?。?)能用拖橡皮檫的手法繪制各類圖形(直線、橢圓、矩形、文字)</p><p> ?。?)支持畫筆顏色、文字大小設(shè)置;</p><p> (3)能將畫面中的所有圖
3、形存儲(chǔ)到文件中;</p><p> ?。?)能從文件讀取圖形進(jìn)行增補(bǔ);</p><p> ?。?)采用對(duì)話框獲取圖形文件名;</p><p> ?。?)利用鼠標(biāo)選取圖形,刪除;</p><p> 由以上設(shè)計(jì)要求可以分析出程序主要是要先使用java圖形界面編輯的方法設(shè)計(jì)出一個(gè)圖形界面,設(shè)計(jì)出的圖形界面要包含一個(gè)菜單條JMenuBar,而這個(gè)菜
4、單條又包含有幾個(gè)菜單如:MenuFile(用于文件的打開(kāi),保存,新建,另存為,退出),MenuSight(包括工具箱和狀態(tài)欄,主要用于控制工具欄和鼠標(biāo)點(diǎn)坐標(biāo)的顯示和隱藏),MenuColor(用于畫筆和面板背景顏色的設(shè)置),MenuHelp(給用戶提供一些通知,可有可無(wú)),其中為了方便用戶比較容易的通過(guò)MenuSight控制工具欄和狀態(tài)欄,我們將工具欄和狀態(tài)欄的菜單項(xiàng)用JcheckBoxMenuItem 設(shè)計(jì),這個(gè)是可以被選定或取消選定
5、的菜單項(xiàng)。如果被選定,菜單項(xiàng)的旁邊通常會(huì)出現(xiàn)一個(gè)復(fù)選標(biāo)記。如果未被選定或被取消選定,菜單項(xiàng)的旁邊就沒(méi)有復(fù)選標(biāo)記。</p><p><b> 二、設(shè)計(jì)</b></p><p><b> 1、設(shè)計(jì)思想</b></p><p> 關(guān)于主要的設(shè)計(jì)就是Java中有關(guān)圖形界面的編程,因此程序中設(shè)計(jì)時(shí)包括相關(guān)組件的選取,界面的布局
6、方式,事件的監(jiān)聽(tīng)以及對(duì)觸發(fā)事件的的處理。在程序中選取的組件JMenuBar,JCheckBoxMenuItem,JButton,JToggleButton,JToolBar,JfileChooser,JFrame等。布局方式主要是邊界布局,在程序中實(shí)現(xiàn)的事件監(jiān)聽(tīng)有動(dòng)作事件,窗口事件,鍵盤事件等,使用這些事件分別用來(lái)實(shí)現(xiàn)程序中規(guī)定的功能。</p><p><b> 2、功能設(shè)計(jì)</b><
7、;/p><p> 本程序主要功能就是通過(guò)一個(gè)圖形界面實(shí)現(xiàn)對(duì)圖形的編輯,可以對(duì)原來(lái)存在的文件打開(kāi),并對(duì)輸入后可以生成文件并保存。關(guān)于這些功能的實(shí)現(xiàn)可以使用JFileChooser組件,其中的方法可以實(shí)現(xiàn)對(duì)打開(kāi)或者保存的文件顯示出文件名和存儲(chǔ)路徑等功能,符合設(shè)計(jì)要求</p><p> 對(duì)于畫筆和面板背景顏色的編輯可以使用JColorChooser提供一個(gè)用于允許用戶操作和選擇顏色的控制器窗格,
8、然后調(diào)用JcolorChooser 的showDialog()方法就可以調(diào)出畫筆和背景顏色的編輯了</p><p><b> 3、詳細(xì)設(shè)計(jì)</b></p><p> ?。?)程序主界面是一個(gè)窗口,在程序設(shè)計(jì)了一個(gè)類MyWindowsPlot,它繼承了JFrame類,作用是顯示出一個(gè)窗口,在這個(gè)窗口中分別添加相關(guān)組件,設(shè)計(jì)布局方式,并對(duì)相關(guān)組件進(jìn)行事件監(jiān)聽(tīng)。主要代碼如
9、下:</p><p> File selFiles;</p><p> Image img;</p><p> public JPanel contentPane;</p><p> BufferedImage image;</p><p> public Color bgColor = new Color
10、(255, 255, 255);</p><p> public Color pColor = new Color (0, 0, 0);</p><p> BorderLayout BorderLayout1 = new BorderLayout();</p><p> JMenuBar jMenuBar1 = new JMenuBar();</p>
11、;<p> JMenu MenuFile = new JMenu();</p><p> JMenuItem MenuNew = new JMenuItem();</p><p> JMenuItem MenuOpen = new JMenuItem();</p><p> JMenuItem MenuSave = new JMenuItem(
12、);</p><p> JMenuItem MenuSaveAs = new JMenuItem();</p><p> JMenuItem MenuExit = new JMenuItem();</p><p> JMenu MenuSight = new JMenu();</p><p> JMenu MenuColor = ne
13、w JMenu();</p><p> JMenuItem MenuEditColor = new JMenuItem();</p><p> JMenuItem MenuEditPencilColor = new JMenuItem(); </p><p> JMenu MenuHelp = new JMenu();</p><p&
14、gt; JMenuItem MenuHelpText = new JMenuItem();</p><p> JMenuItem MenuAbout = new JMenuItem();</p><p> JMenu menuColour = new JMenu();</p><p> JMenuItem itemNative = new JMenuItem
15、();</p><p> JMenuItem itemMotif = new JMenuItem();</p><p> JMenuItem itemMetal = new JMenuItem(); </p><p> JCheckBoxMenuItem tool = new JCheckBoxMenuItem("工具箱(T)");&
16、lt;/p><p> JCheckBoxMenuItem state = new JCheckBoxMenuItem("狀態(tài)欄(F)");</p><p> JToolBar jToolBar1 = new JToolBar();</p><p> JButton jbNew = new JButton();</p><p&
17、gt; JButton jbSave = new JButton();</p><p> JButton jbOpen = new JButton();</p><p> JToggleButton jbPencil = new JToggleButton();</p><p> JToggleButton jbBrush = new JToggleButt
18、on();</p><p> JToggleButton jbBeeline = new JToggleButton();</p><p> JToggleButton jbRotundity = new JToggleButton();</p><p> JToggleButton jbPolygon = new JToggleButton();</p
19、><p> JToggleButton jbRect = new JToggleButton();</p><p> JToggleButton jbFillRotundity = new JToggleButton();</p><p> JToggleButton jbFillRect = new JToggleButton();</p><
20、;p> JToggleButton jbFillPolygon = new JToggleButton(); </p><p> JLabel jLabel1 = new JLabel();</p><p> ImageIcon imageNew = new ImageIcon(MyWindowsPlot.class.getResource("New24.gif
21、"));</p><p> ImageIcon imageSave = new ImageIcon(MyWindowsPlot.class.getResource("Save24.gif"));</p><p> ImageIcon imageOpen = new ImageIcon(MyWindowsPlot.class.getResource(&quo
22、t;Open24.gif"));</p><p> ImageIcon imageFill = new ImageIcon(MyWindowsPlot.class.getResource("Fill.gif"));</p><p> ImageIcon imageBrush = new ImageIcon(MyWindowsPlot.class.getRe
23、source("Brush.gif"));</p><p> ImageIcon imageBeeline = new ImageIcon(MyWindowsPlot.class.getResource("Beeline.gif"));</p><p> ImageIcon imageRotundity = new ImageIcon(MyWin
24、dowsPlot.class.getResource("Rotundity.gif"));</p><p> ImageIcon imagePolygon = new ImageIcon(MyWindowsPlot.class.getResource("Polygon.gif"));</p><p> ImageIcon imageRect =
25、new ImageIcon(MyWindowsPlot.class.getResource("Rect.gif"));</p><p> ImageIcon imageAbout = new ImageIcon(MyWindowsPlot.class.getResource("About24.gif"));</p><p> ImageIcon
26、imageFillRect = new ImageIcon(MyWindowsPlot.class.getResource("fillRect.gif"));</p><p> ImageIcon imageFillOval = new ImageIcon(MyWindowsPlot.class.getResource("fillOval.gif"));</p>
27、;<p> ImageIcon imageFillPolygon = new ImageIcon(MyWindowsPlot.class.getResource("fillPolygon.gif"));</p><p> static Image windowsIcon = Toolkit.getDefaultToolkit().getImage(MyWindowsPlot.
28、class.getResource("12.gif"));</p><p> ButtonGroup cbg;</p><p> MyActionListener maListener;</p><p> MyItemListener miListener;</p><p> //設(shè)置畫筆顏色變量</p>
29、;<p> public Color[] drawLineColor = new Color[10000];</p><p> public Color[] drawOvalColor = new Color[10000];</p><p> public Color[] drawRectColor = new Color[10000];</p><
30、p> public Color[] fillRectColor = new Color[10000];</p><p> public Color[] fillOvalColor = new Color[10000];</p><p><b> //繪制直線的變量</b></p><p> public int countDraw
31、Line = 0;</p><p> public int mousePressedDrawLineX[] = new int[10000], mousePressedDrawLineY[] = new int[10000];</p><p> public int mouseReleasedDrawLineX[] = new int[10000], mouseReleasedDraw
32、LineY[] = new int[10000];</p><p><b> //繪制矩行的變量</b></p><p> public int countDrawRect = 0;</p><p> public int mousePressedDrawRectX[] = new int[10000], mousePressedDraw
33、RectY[] = new int[10000];</p><p> public int mouseReleasedDrawRectX[] = new int[10000], mouseReleasedDrawRectY[] = new int[10000];</p><p> public int mouseDraggedDrawRectX = 0, mouseDraggedDra
34、wRectY = 0;</p><p><b> //繪制圓形的變量</b></p><p> public int countDrawOval = 0;</p><p> public int mouseDraggedDrawOvalX = 0, mouseDraggedDrawOvalY = 0;</p><p&g
35、t; public int mouseReleasedDrawOvalX[] = new int[10000], mouseReleasedDrawOvalY[] = new int[10000];</p><p> public int mousePressedDrawOvalX[] = new int[10000], mousePressedDrawOvalY[] = new int[10000];<
36、;/p><p> //繪制填充圓形的變量</p><p> public int countFillOval = 0;</p><p> public int mouseDraggedFillOvalX = 0, mouseDraggedFillOvalY = 0;</p><p> public int mouseReleasedFil
37、lOvalX[] = new int[10000], mouseReleasedFillOvalY[] = new int[10000];</p><p> public int mousePressedFillOvalX[] = new int[10000], mousePressedFillOvalY[] = new int[10000];</p><p> //繪制多邊形的變量&
38、lt;/p><p> public int countDrawPolygon = 0;</p><p> public int mousePressedDrawPolygonX[] = new int[10000], mousePressedDrawPolygonY[] = new int[10000];</p><p> //繪制填充多邊形的變量</p&g
39、t;<p> public int countFillPolygon = 0;</p><p> public int mousePressedFillPolygonX[] = new int[10000], mousePressedFillPolygonY[] = new int[10000];</p><p> //繪制填充矩形的變量</p><
40、p> public int countFillRect = 0;</p><p> public int mousePressedFillRectX[] = new int[10000], mousePressedFillRectY[] = new int[10000];</p><p> public int mouseReleasedFillRectX[] = new in
41、t[10000], mouseReleasedFillRectY[] = new int[10000];</p><p> public int mouseDraggedFillRectX = 0, mouseDraggedFillRectY = 0;</p><p><b> //繪制畫筆的變量</b></p><p> //Gener
42、alPath對(duì)象實(shí)例</p><p> GeneralPath gPath = new GeneralPath(); </p><p> Point pencilPoint;</p><p><b> //繪制擦皮的變量</b></p><p> public int countDrawBrush = 0;<
43、;/p><p> public int mouseDrawBrushX[] = new int[10000], mouseDrawBrushY[] = new int[10000];</p><p> //繪制圖形的監(jiān)聽(tīng)器</p><p> MouseListener mlOneDrawRect, mlTwoDrawRect, mlOneFillRect, mlT
44、woFillRect;</p><p> MouseMotionListener mmlDrawRect, mmlFillRect;</p><p> MouseListener mlOneDrawLine, mlTwoDrawLine;</p><p> MouseListener mlOneDrawOval, mlTwoDrawOval, mlOneFil
45、lOval, mlTwoFillOval;</p><p> MouseMotionListener mmlDrawOval, mmlFillOval;</p><p> MouseListener mlOneDrawPolygon, mlOneFillPolygon;</p><p> MouseListener mlOneDrawPencil;</p
46、><p> MouseMotionListener mmlDrawPencil;</p><p> MouseListener mlOneDrawBrush;</p><p> MouseMotionListener mmlDrawBrush;</p><p> contentPane.setLayout(BorderLayout1);&
47、lt;/p><p> contentPane.setBackground(bgColor); </p><p> setJMenuBar(jMenuBar1);</p><p> setSize(new Dimension(750, 550));</p><p> setTitle("WindowsPlot畫圖板&
48、quot;); </p><p> MenuFile.setFont(new java.awt.Font("宋體", Font.PLAIN, 13));</p><p> MenuFile.setText("文件(F)");</p><p> MenuFile.setMnemonic('F');&l
49、t;/p><p> MenuNew.setFont(new java.awt.Font("宋體", Font.PLAIN, 13));</p><p> MenuNew.setText("新建(N)");</p><p> MenuNew.setAccelerator(KeyStroke.getKeyStroke('
50、N', java.awt.Event.CTRL_MASK, false));</p><p> MenuNew.setActionCommand("NewPage");</p><p> MenuOpen.setFont(new java.awt.Font("宋體", Font.PLAIN, 13));</p><p&
51、gt; MenuOpen.setText("打開(kāi)(O)");</p><p> MenuOpen.setAccelerator(KeyStroke.getKeyStroke('O', java.awt.Event.CTRL_MASK, false));</p><p> MenuOpen.setActionCommand("MenuOpe
52、n");</p><p> MenuSave.setFont(new java.awt.Font("宋體", Font.PLAIN, 13));</p><p> MenuSave.setText("保存(S)");</p><p> MenuSave.setAccelerator(KeyStroke.getK
53、eyStroke('S', java.awt.Event.CTRL_MASK, false));</p><p> MenuSave.setActionCommand("MenuSave");</p><p> MenuSaveAs.setFont(new java.awt.Font("宋體", Font.PLAIN, 13));
54、</p><p> MenuSaveAs.setText("另存為(A)");</p><p> MenuSaveAs.setAccelerator(KeyStroke.getKeyStroke('A', java.awt.Event.CTRL_MASK, false));</p><p> MenuSaveAs.setAc
55、tionCommand("MenuSaveAs");</p><p> MenuExit.setFont(new java.awt.Font("宋體", Font.PLAIN, 13));</p><p> MenuExit.setText("退出(E)");</p><p> MenuExit.se
56、tAccelerator(KeyStroke.getKeyStroke('E', java.awt.Event.CTRL_MASK, false));</p><p> MenuExit.setActionCommand("Exit");</p><p> MenuSight.setFont(new java.awt.Font("宋體&qu
57、ot;, Font.PLAIN, 13));</p><p> MenuSight.setText("查看(V)");</p><p> MenuSight.setMnemonic('V');</p><p> MenuColor.setFont(new java.awt.Font("宋體", Font.
58、PLAIN, 13));</p><p> tool.setFont(new java.awt.Font("宋體", Font.PLAIN, 13));</p><p> tool.setAccelerator(KeyStroke.getKeyStroke('T', java.awt.Event.CTRL_MASK, false));</p&g
59、t;<p> state.setFont(new java.awt.Font("宋體", Font.PLAIN, 13));</p><p> state.setAccelerator(KeyStroke.getKeyStroke('F', java.awt.Event.CTRL_MASK, false));</p><p> Men
60、uColor.setText("顏色(C)");</p><p> MenuColor.setMnemonic('C');</p><p> MenuEditColor.setFont(new java.awt.Font("宋體", Font.PLAIN, 13));</p><p> MenuEditC
61、olor.setText("背景顏色(B)");</p><p> MenuEditColor.setAccelerator(KeyStroke.getKeyStroke('B', java.awt.Event.CTRL_MASK, false));</p><p> MenuEditColor.setActionCommand("Edit
62、Color");</p><p> MenuEditPencilColor.setFont(new java.awt.Font("宋體", Font.PLAIN, 13));</p><p> MenuEditPencilColor.setText("畫筆顏色(P)");</p><p> MenuEditPe
63、ncilColor.setAccelerator(KeyStroke.getKeyStroke('P', java.awt.Event.CTRL_MASK, false));</p><p> MenuEditPencilColor.setActionCommand("EditPencilColor"); </p><p> itemMetal.se
64、tActionCommand("itemMetal"); </p><p> MenuHelp.setFont(new java.awt.Font("宋體", Font.PLAIN, 13));</p><p> MenuHelp.setText("幫助(H)");</p><p>
65、 MenuHelp.setMnemonic('H');</p><p> MenuHelpText.setFont(new java.awt.Font("宋體", Font.PLAIN, 13));</p><p> MenuHelpText.setText("幫助主題(H)");</p><p> Me
66、nuHelpText.setAccelerator(KeyStroke.getKeyStroke('H', java.awt.Event.CTRL_MASK, false));</p><p> MenuHelpText.setActionCommand("MenuHelpText");</p><p> MenuAbout.setFont(new
67、java.awt.Font("宋體", Font.PLAIN, 13));</p><p> MenuAbout.setText("關(guān)于畫圖(C)");</p><p> MenuAbout.setAccelerator(KeyStroke.getKeyStroke('C', java.awt.Event.CTRL_MASK, f
68、alse));</p><p> MenuAbout.setActionCommand("MenuAbout");</p><p> jToolBar1.setFont(new java.awt.Font("宋體", Font.PLAIN, 13));</p><p> jToolBar1.setFloatable(fa
69、lse);</p><p> jToolBar1.setBounds(new Rectangle(1, 1, 767, 24));</p><p> jbNew.setMaximumSize(new Dimension(29, 27));</p><p> jbNew.setMinimumSize(new Dimension(29, 27));</p&g
70、t;<p> jbNew.setIcon(imageNew);</p><p> jbNew.setActionCommand("jbNew");</p><p> jbNew.setToolTipText("新建");</p><p> jbSave.setMaximumSize(new Dimensi
71、on(29, 27));</p><p> jbSave.setMinimumSize(new Dimension(29, 27));</p><p> jbSave.setIcon(imageSave);</p><p> jbSave.setToolTipText("保存");</p><p> jbSave.
72、setActionCommand("jbSave");</p><p> jbOpen.setMaximumSize(new Dimension(29, 27));</p><p> jbOpen.setMinimumSize(new Dimension(29, 27));</p><p> jbOpen.setIcon(imageOpen
73、);</p><p> jbOpen.setToolTipText("打開(kāi)");</p><p> jbOpen.setActionCommand("jbOpen");</p><p> jbPencil.setMaximumSize(new Dimension(29, 27));</p><p>
74、; jbPencil.setIcon(imageFill);</p><p> jbPencil.setToolTipText("畫筆");</p><p> jbPencil.setMinimumSize(new Dimension(29, 27));</p><p> jbBrush.setMaximumSize(new Dimens
75、ion(29, 27));</p><p> jbBrush.setToolTipText("擦皮");</p><p> jbBrush.setIcon(imageBrush);</p><p> jbBrush.setMinimumSize(new Dimension(29, 27));</p><p> jb
76、Beeline.setMaximumSize(new Dimension(29, 27));</p><p> jbBeeline.setToolTipText("直線");</p><p> jbBeeline.setIcon(imageBeeline);</p><p> jbBeeline.setMinimumSize(new Dim
77、ension(29, 27));</p><p> jbRotundity.setMaximumSize(new Dimension(29, 27));</p><p> jbRotundity.setIcon(imageRotundity);</p><p> jbRotundity.setToolTipText("圓");</p&
78、gt;<p> jbRotundity.setMinimumSize(new Dimension(29, 27));</p><p> jbPolygon.setMaximumSize(new Dimension(29, 27));</p><p> jbPolygon.setIcon(imagePolygon);</p><p> jbPol
79、ygon.setToolTipText("多邊形");</p><p> jbPolygon.setMinimumSize(new Dimension(29, 27));</p><p> jbRect.setMaximumSize(new Dimension(29, 27));</p><p> jbRect.setIcon(imageR
80、ect);</p><p> jbRect.setToolTipText("矩形");</p><p> jbRect.setMinimumSize(new Dimension(29, 27));</p><p> jbFillRotundity.setMaximumSize(new Dimension(29, 27));</p>
81、;<p> jbFillRotundity.setToolTipText("填充圓形");</p><p> jbFillRotundity.setIcon(imageFillOval);</p><p> jbFillRotundity.setMinimumSize(new Dimension(29, 27));</p><p&
82、gt; jbFillRect.setMaximumSize(new Dimension(29, 27));</p><p> jbFillRect.setToolTipText("填充矩形");</p><p> jbFillRect.setIcon(imageFillRect);</p><p> jbFillRect.setMinim
83、umSize(new Dimension(29, 27));</p><p> jbFillPolygon.setMaximumSize(new Dimension(29, 27));</p><p> jbFillPolygon.setToolTipText("填充多邊形");</p><p> jbFillPolygon.setIcon
84、(imageFillPolygon);</p><p> jbFillPolygon.setMinimumSize(new Dimension(29, 27)); </p><p> state.setSelected(true);</p><p> jLabel1.setText("坐標(biāo): ");</p><
85、;p> jLabel1.setBounds(new Rectangle(0, 526, 750, 24));</p><p> jMenuBar1.add(MenuFile);</p><p> jMenuBar1.add(MenuSight);</p><p> jMenuBar1.add(MenuColor);</p><p&g
86、t; jMenuBar1.add(MenuHelp);</p><p> MenuFile.add(MenuNew);</p><p> MenuFile.add(MenuOpen);</p><p> MenuFile.add(MenuSave);</p><p> MenuFile.add(MenuSaveAs);</p&
87、gt;<p> MenuFile.addSeparator();</p><p> MenuFile.add(MenuExit);</p><p> MenuSight.add(tool);</p><p> MenuSight.add(state);</p><p> MenuColor.add(MenuEditCo
88、lor);</p><p> MenuColor.add(MenuEditPencilColor); </p><p> MenuHelp.add(MenuHelpText);</p><p> MenuHelp.addSeparator();</p><p> MenuHelp.add(MenuAbout);
89、 </p><p> jToolBar1.add(jbNew);</p><p> jToolBar1.add(jbSave);</p><p> jToolBar1.add(jbOpen);</p><p> jToolBar1.addSeparator();</p><p> jToolBar1.add
90、(jbPencil);</p><p> jToolBar1.add(jbBrush);</p><p> jToolBar1.add(jbBeeline);</p><p> jToolBar1.add(jbRotundity);</p><p> jToolBar1.add(jbPolygon);</p><p
91、> jToolBar1.add(jbRect);</p><p> jToolBar1.add(jbFillRotundity);</p><p> jToolBar1.add(jbFillRect);</p><p> jToolBar1.add(jbFillPolygon);</p><p> this.add(jTool
92、Bar1, BorderLayout.NORTH);</p><p> this.add(contentPane, BorderLayout.CENTER);</p><p> this.add(jLabel1, BorderLayout.SOUTH);</p><p> //根據(jù)選擇狀態(tài)進(jìn)行繪圖如:是否為直線,是否畫圓等()</p>&
93、lt;p> cbg = new ButtonGroup();</p><p> cbg.add(jbPencil);</p><p> cbg.add(jbBrush);</p><p> cbg.add(jbBeeline);</p><p> cbg.add(jbRotundity);</p><p&g
94、t; cbg.add(jbPolygon);</p><p> cbg.add(jbRect);</p><p> cbg.add(jbFillRotundity);</p><p> cbg.add(jbFillRect);</p><p> cbg.add(jbFillPolygon);</p><p>
95、 //根據(jù)"查看"菜單下的項(xiàng)目選擇狀態(tài)而動(dòng)態(tài)加載工具欄</p><p> tool.setSelected(true);</p><p> //以下為 JCheckBoxMenuItem 事件</p><p> miListener = new MyItemListener();</p><p> tool.ad
96、dItemListener(miListener);</p><p> state.addItemListener(miListener);</p><p> //以下代碼為增加事件</p><p> maListener = new MyActionListener();</p><p> MenuExit.addActionLis
97、tener(maListener);</p><p> MenuNew.addActionListener(maListener);</p><p> MenuEditColor.addActionListener(maListener);</p><p> MenuEditPencilColor.addActionListener(maListener);&
98、lt;/p><p> jbNew.addActionListener(maListener);</p><p> MenuSave.addActionListener(maListener);</p><p> MenuSaveAs.addActionListener(maListener);</p><p> MenuOpen.addA
99、ctionListener(maListener);</p><p> MenuAbout.addActionListener(maListener);</p><p> jbPencil.addActionListener(maListener);</p><p> jbBrush.addActionListener(maListener);</p&g
100、t;<p> jbBeeline.addActionListener(maListener);</p><p> jbRotundity.addActionListener(maListener);</p><p> jbPolygon.addActionListener(maListener);</p><p> jbRect.addActi
101、onListener(maListener);</p><p> jbFillRotundity.addActionListener(maListener);</p><p> jbFillRect.addActionListener(maListener);</p><p> jbFillPolygon.addActionListener(maListene
102、r); </p><p> jbSave.addActionListener(maListener);</p><p> jbOpen.addActionListener(maListener);</p><p> MenuHelpText.addActionListener(maListener);</p><p>
103、itemNative.addActionListener(maListener);</p><p> itemMotif.addActionListener(maListener);</p><p> itemMetal.addActionListener(maListener);</p><p> 以上代碼定義了界面上的所有的組件以及監(jiān)聽(tīng)接口,但是其中有些實(shí)
104、現(xiàn)接口繼承類是自己定義的這樣可以在類中只需要定義需要的方法,及觸發(fā)事件需要執(zhí)行的動(dòng)作,而不需要將原類所有的方法都寫出來(lái),可以減少代量,其實(shí)其中還涉及到一些方法:</p><p> 1)setActionCommand(參數(shù))里面的參數(shù)為設(shè)置此組件激發(fā)的操作事件的命令名稱。 如: JButton btnShow = new JButton(); </p><p> btnShow.se
105、tActionCommand("show"); 當(dāng)這個(gè)按鈕被點(diǎn)擊的時(shí)候,你就可以用 ActionEvent 的 getActionCommand().equals("show") 去比較觸發(fā)事件的是不是這個(gè)按鈕</p><p> 2) setMnemonic(‘ 參數(shù)’)參數(shù)為鍵盤助記符名稱,它與外觀的無(wú)鼠標(biāo)修飾符(通常是 Alt)組合時(shí)(如果焦點(diǎn)被包含在此按鈕祖先窗口
106、中的某個(gè)地方)</p><p> 將激活此按鈕。 一個(gè)助記符必須對(duì)應(yīng)鍵盤上的一個(gè)鍵,并且應(yīng)該使用 java.awt.event.KeyEvent 中定義的 VK_XXX 鍵代碼之一指定。助記符是不區(qū)分大小寫的,所以具有相應(yīng)鍵代碼的鍵事件將造成按鈕被激活,不管是否按下 Shift 修飾符。 如果在按鈕的標(biāo)簽字符串中發(fā)現(xiàn)由助記符定義的字符,則第一個(gè)出現(xiàn)的助記符將是帶下劃線的,</p><p&g
107、t; 以向用戶指示該助記符。 </p><p> 3)setSelected(參數(shù))參數(shù)為布爾型,可以確定指定菜單項(xiàng)的選擇狀態(tài),如此處是為了獲取查看菜單下的工具和狀態(tài)菜單項(xiàng)的選擇狀態(tài)</p><p> 4)setImage(Image image) 作用是設(shè)置由此圖標(biāo)顯示的圖像。</p><p> 5)setAccelerator(KeyStrok
108、e.getKeyStroke('O', java.awt.Event.CTRL_MASK, false))</p><p> 置修改鍵,它能直接調(diào)用菜單項(xiàng)的操作偵聽(tīng)器而不必顯示菜單的層次結(jié)構(gòu)</p><p> /KeyStroke 表示鍵盤或等效輸入設(shè)置上的鍵操作的 KeyStroke。KeyStroke 僅能對(duì)應(yīng)于按下或釋放某個(gè)特定的鍵,正如 KEY_PRESSED
109、 和 KEY_RELEASED KeyEvents 執(zhí)行的操作;或者,它們可能對(duì)應(yīng)于鍵入特定的 Java 字符,正如 KEY_TYPED KeyEvents 執(zhí)行的操作。在所有情況下,KeyStroke 都可以指定修飾符(alt、shift、control、meta、altGraph 或其組合),在針對(duì)精確匹配的操作中,這些修飾符必須存在。 </p><p> KeyStroke 用于定義高級(jí)(語(yǔ)義)操作事件。
110、不用捕獲每個(gè) keystroke 并拋棄不感興趣的 keystroke,這些重要的 keystroke 會(huì)自動(dòng)在其注冊(cè)的 Components 上啟動(dòng)操作。 KeyStroke 是不可變的,而且是唯一的。客戶端代碼無(wú)法創(chuàng)建 KeyStroke;必須使用 getKeyStroke 的變體。這些工廠方法使得 KeyStroke 實(shí)現(xiàn)能夠高效緩存和共享實(shí)例。 </p><p> getKeyStroke 在給出一個(gè)數(shù)
111、字鍵代碼和一組修飾符的情況下,返回 KeyStroke 的一個(gè)共享實(shí)例,指定該鍵在按下或釋放時(shí)是否為已激活。 可以使用在 java.awt.event.KeyEvent 中定義的“虛擬鍵”常量來(lái)指定鍵代碼。</p><p><b> ?。?)保存窗口設(shè)計(jì)</b></p><p><b> /保存對(duì)話框</b></p><p&
112、gt; public class MyFileChooser extends JFileChooser</p><p><b> {</b></p><p> public MyFileChooser() </p><p><b> {</b></p><p><b> supe
113、r();</b></p><p><b> }</b></p><p> public MyFileChooser(File currentDirectory) </p><p><b> {</b></p><p> super(currentDirectory);</p
114、><p><b> }</b></p><p> public MyFileChooser(File currentDirectory, FileSystemView fsv) </p><p><b> {</b></p><p> super(currentDirectory, fsv);&
115、lt;/p><p><b> }</b></p><p> public MyFileChooser(FileSystemView fsv) </p><p><b> {</b></p><p> super(fsv);</p><p><b> }<
116、/b></p><p> public MyFileChooser(String currentDirectoryPath) </p><p><b> {</b></p><p> super(currentDirectoryPath);</p><p><b> }</b><
117、/p><p> public MyFileChooser(String currentDirectoryPath, FileSystemView fsv) </p><p><b> {</b></p><p> super(currentDirectoryPath, fsv);</p><p><b>
118、}</b></p><p> public void approveSelection()</p><p><b> {</b></p><p> if (this.getDialogType() == JFileChooser.SAVE_DIALOG)</p><p><b> {<
119、/b></p><p> File temp = this.getSelectedFile();</p><p> if (temp.exists()) </p><p><b> {</b></p><p> if (JOptionPane.showConfirmDialog(this,</p>
溫馨提示
- 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- java畫圖板課程設(shè)計(jì)報(bào)告
- java畫圖板課程設(shè)計(jì)報(bào)告
- java課程設(shè)計(jì)--畫圖板設(shè)計(jì)與實(shí)現(xiàn)
- vc++課程設(shè)計(jì)報(bào)告 paint board 簡(jiǎn)易畫圖板
- java畫圖板課程設(shè)計(jì)報(bào)告只有報(bào)告沒(méi)有完整源代碼
- java課程設(shè)計(jì)---畫圖板軟件開(kāi)發(fā)和設(shè)計(jì)
- 畫圖板軟件詳細(xì)設(shè)計(jì)
- 開(kāi)題報(bào)告----vc制作的畫圖板
- qt畫圖板的設(shè)計(jì)與實(shí)現(xiàn)
- qt畫圖板的設(shè)計(jì)與實(shí)現(xiàn).doc
- 簡(jiǎn)單畫圖程序課程設(shè)計(jì)報(bào)告
- 簡(jiǎn)單畫圖程序課程設(shè)計(jì)報(bào)告
- 簡(jiǎn)單畫圖程序課程設(shè)計(jì)
- 簡(jiǎn)單畫圖程序-課程設(shè)計(jì)
- 課程設(shè)計(jì)----畫圖軟件開(kāi)發(fā)制作文檔
- 軟件工程課程設(shè)計(jì)-- windows繪圖板的設(shè)計(jì)與實(shí)現(xiàn)
- java課程設(shè)計(jì)----課程設(shè)計(jì)報(bào)告
- fpga課程設(shè)計(jì)課程設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)報(bào)告
評(píng)論
0/150
提交評(píng)論