資源簡介
1. 畫板UI設計(總體布局)
(1)創建窗體并設置相關屬性;
(2)給整個窗體添加一個中間容器用來覆蓋整個窗體;
(3)設置邊框布局,因為整個畫板大致為左邊部分,中間部分,菜單欄三個部分,用邊框布局比較合適;
(4)給窗體添加左面板,中間面板;
(5)給左面板添加按鈕,并設置按鈕圖片和效果;
(6)給左面板添加左子面板,用來存放顏色按鈕;
2.畫板功能設計
(1)給左畫板中的按鈕組中的每個按鈕添加鼠標監聽器;
(2)點擊不同按鈕,繪制不同的圖形;
(3)給左子面板中的每個顏色按鈕添加鼠標監聽器;
(4)根據下面板中選中的顏色按鈕,來獲取按鈕的背景顏色,并將該顏色設置成畫筆的顏色;
(5)鉛筆功能
1、鉛筆是鼠標拖動時畫的線,所需要實現鼠標移動監聽器,我們采用一個類來實現多個接口;
2、添加新的鼠標監聽器類;
3、在鼠標移動時間中實現畫筆的邏輯(其實就是繪制直線,鼠標每移動一個像素,就會觸發移動事件,通過移動事件獲取鼠標的坐標,與上一次移動的坐標連線就可以了;
(6)刷子功能
刷子其實就是加粗的畫筆,畫出來的直線更粗,這里需要用到Graphic2D畫筆來設置畫筆的粗細。
(7)橡皮擦功能
橡皮擦就是把畫筆顏色設置成相同的背景顏色就可以了,拖動鼠標時進行擦除,所以在鼠標拖動事件中編寫。
(8)噴桶功能
1、定位方法:鼠標拖動事件實現;
2、隨機數生成:Random;
3、實現原理,在鼠標拖動附近繪制很多的原點;
3. 畫板的保存和重繪的設計
(1)給我們的畫板添加菜單條、菜單以及菜單項
(2)給每個菜單項添加監聽器
(3)點擊不同的菜單項實現相應的功能
(4)圖形保存功能:利用對象輸出流,將容器對象寫入文件;
(5)打開圖形功能:利用對象輸入流,將容器對象讀入,然后將容器里面的圖形對象在畫板上繪制出來
(6)新建文件功能:新建文件,將畫板上繪制的內容清空(清空之前可以確認是否需要進行保存)清屏(重繪)功能依次方法;
(7)文件保存格式為BMP格式;
(8)文字功能:讀取文本框中的文本并打印到屏幕鼠標的相應的響應位置,傳入輸入的文字大小的參數,以此來改變文字的大小;
4.彈泡泡功能的設計
根據Java多線程來實現彈泡泡功能;泡泡的位置顏色隨機出現,并且做到碰到邊框會變色;

代碼片段和文件信息
package?com.picture;
import?com.picture.com.ButtonListener;
import?com.picture.com.DrawListener;
import?java.awt.Graphics2D;
import?java.awt.*;
import?javax.swing.*;
import?javax.swing.JMenu;
import?javax.swing.JMenuBar;
import?javax.swing.JMenuItem;
import?javax.swing.border.BevelBorder;
import?java.util.ArrayList;
import?java.lang.Exception;
import?com.picture.com.com.com.com.Point;
import?sun.font.EAttribute;
import?java.awt.Desktop;
import?javax.swing.JScrollPane;
import?javax.swing.JTextArea;
import?javax.swing.UnsupportedLookAndFeelException;
public?class?Imageframe?extends?Jframe{
????//聲明顏色屬性,并賦默認值
????public?Color?c=Color.RED;
????//按鈕屬性
????public??static???JTextField?textField;
????public??static???JTextField?textField1;
????public?JButton??bt?;
????public?JPanel?panelcenter;
????public?Graphics2D?g;
????ArrayList?list?=?new?ArrayList();//容器
????public?void?initframe()?throws?Exception{
//設置窗體相關屬性
????????this.setSize(700600);
????????this.settitle(“圖?畫?板“);
????????this.setDefaultCloseOperation(3);
????????this.setLocationRelativeTo(null);
????????//把添加菜單作為一個方法封裝起來
???????addMenu();
//窗體添加主面板
????????JPanel?panel?=?new?JPanel();
????????panel.setLayout(new?BorderLayout());
????????this.add(panel);
????????panelcenter?=?new?JPanel(){
????????????public?void?paint(Graphics?g1)?{
????????????????g=(Graphics2D)g1;
????????????????super.paint(g);
????????????????for?(int?i?=?0;?i? ????????????????????Point?point?=(Point)?list.get(i);
????????????????????point.Draw(g);
????????????????}
????????????}
????????};
????????panelcenter.setBackground(Color.white);
????????panel.add(panelcenter);
//主面板添加左面板
????????JPanel?panelleft?=?new?JPanel();
????????panelleft.setPreferredSize(new?Dimension(500));
????????panelleft.setLayout(new?FlowLayout(FlowLayout.LEFT00));
????????panelleft.setBackground(new?Color(235233238));
????????panel.add(panelleftBorderLayout.WEST);
//面板中添加按鈕
????????ButtonGroup?bg?=?new?ButtonGroup();//畫板中的按鈕統一管理,互相排斥,保證只能選擇一個按鈕
????????for(int?i=0;i<15;i++)?{
????????????JRadioButton?jrb?=?new?JRadioButton();
//給按鈕添加圖片
//按鈕設置
????????????if?(i?!=?0?&&?i?!=?1?&&?i?!=?4?&&?i?!=?5?&&?i?!=?9?&&?i?!=?11?&&?i?!=?13)?{
????????????????String?str1?=?“/draw“?+?i?+?“.jpg“;
????????????????String?str2?=?“/draw“?+?i?+?“-1.jpg“;
????????????????String?str3?=?“/draw“?+?i?+?“-2.jpg“;
????????????????String?str4?=?“/draw“?+?i?+?“-3.jpg“;
????????????????ImageIcon?img1?=?new?ImageIcon(this.getClass().getResource(str1));
????????????????ImageIcon?img2?=?new?ImageIcon(this.getClass().getResource(str2));
????????????????ImageIcon?img3?=?new?ImageIcon(this.getClass().getResource(str3));
????????????????ImageIcon?img4?=?new?ImageIcon(this.getClass().getResource(str4));
????????????????jrb.setIcon(img1);//默認圖片
????????????????jrb.setRolloverIcon(img2);//鼠標停留在按鈕上顯示的圖片
????????????????jrb.setPressedIcon(img3);//鼠標按下按鈕顯示的圖片
??????????
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????116197??2017-09-01?13:12??Java畫板\emmmmm.jar
?????文件?????186524??2017-09-01?21:53??Java畫板\Java畫圖板技術報告.docx
?????文件????????511??2017-08-31?16:32??Java畫板\畫板\emmmmm.iml
?????文件?????????97??2017-08-18?16:30??Java畫板\畫板\.idea\desc
?????文件????????499??2017-08-18?16:30??Java畫板\畫板\.idea\misc.xm
?????文件????????279??2017-08-18?16:33??Java畫板\畫板\.idea\modules.xm
?????文件?????????91??2017-08-18?16:30??Java畫板\畫板\.idea\project-template.xm
?????文件??????51691??2017-09-01?13:13??Java畫板\畫板\.idea\workspace.xm
?????文件???????8792??2017-09-01?11:14??Java畫板\畫板\.idea\uiDesigner.xm
?????文件????????564??2017-09-01?13:12??Java畫板\畫板\.idea\artifacts\emmmmm_jar.xm
?????文件??????61231??2017-08-31?17:00??Java畫板\畫板\images\Ball.gif
?????文件????????356??2016-11-09?20:44??Java畫板\畫板\images\cursorPen.gif
?????文件????????611??2016-11-09?20:44??Java畫板\畫板\images\cursorPen.png
?????文件????????607??2016-11-09?20:44??Java畫板\畫板\images\draw10-1.jpg
?????文件????????601??2016-11-09?20:44??Java畫板\畫板\images\draw10-2.jpg
?????文件????????628??2016-11-09?20:44??Java畫板\畫板\images\draw10-3.jpg
?????文件????????522??2016-11-09?20:44??Java畫板\畫板\images\draw10.jpg
?????文件????????571??2016-11-09?20:44??Java畫板\畫板\images\draw12-1.jpg
?????文件????????597??2016-11-09?20:44??Java畫板\畫板\images\draw12-2.jpg
?????文件????????575??2016-11-09?20:44??Java畫板\畫板\images\draw12-3.jpg
?????文件????????542??2016-11-09?20:44??Java畫板\畫板\images\draw12.jpg
?????文件????????606??2016-11-09?20:44??Java畫板\畫板\images\draw14-1.jpg
?????文件????????653??2016-11-09?20:44??Java畫板\畫板\images\draw14-2.jpg
?????文件????????671??2016-11-09?20:44??Java畫板\畫板\images\draw14-3.jpg
?????文件????????507??2016-11-09?20:44??Java畫板\畫板\images\draw14.jpg
?????文件????????787??2016-11-09?20:44??Java畫板\畫板\images\draw2-1.jpg
?????文件????????729??2016-11-09?20:44??Java畫板\畫板\images\draw2-2.jpg
?????文件????????783??2016-11-09?20:44??Java畫板\畫板\images\draw2-3.jpg
?????文件???????9489??2016-11-09?20:44??Java畫板\畫板\images\draw2.jpg
?????文件????????784??2016-11-09?20:44??Java畫板\畫板\images\draw3-1.jpg
............此處省略151個文件信息
評論
共有 條評論