歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> 非常值得學習的java 繪圖板源代碼

非常值得學習的java 繪圖板源代碼

日期:2017/3/1 11:08:22   编辑:Linux編程
Java 小小繪圖板,各種圖形的繪制和文字的寫入,也可以調整文字畫筆的粗細 。還可以保存圖像,非常值得學習的java 繪圖板源代碼下載地址:

免費下載地址在 http://linux.linuxidc.com/

用戶名與密碼都是www.linuxidc.com

具體下載目錄在 /pub/2011/11/05/java 繪圖板源代碼/

用到的各種圖片 請將圖片放在icon文件夾下

circle.jpg color.jpgfcircle.jpgfoval.jpgfrect.jpgfroundrect.jpgline.jpgnewfile.jpgopenfile.jpgoval.jpgpen.jpgrect.jpgroundrect.jpgrubber.jpgsavefile.jpgstroke.jpgword.jpg

  1. package minidrawpad;
  2. import java.awt.*;
  3. import java.awt.event.*;
  4. import java.io.InputStreamReader;
  5. import java.io.Reader;
  6. import javax.swing.*;
  7. // 主界面類
  8. public class DrawPad extends JFrame implements ActionListener {
  9. /**
  10. * @param FileName DrawPad
  11. * @author Liu Jun Guang s
  12. * @param V 1.0.0
  13. */
  14. private static final long serialVersionUID = -2551980583852173918L;
  15. private JToolBar buttonpanel;//定義按鈕面板
  16. private JMenuBar bar ;//定義菜單條
  17. private JMenu file,color,stroke,help;//定義菜單
  18. private JMenuItem newfile,openfile,savefile,exit;//file 菜單中的菜單項
  19. private JMenuItem helpin,helpmain,colorchoice,strokeitem;//help 菜單中的菜單項
  20. private Icon nf,sf,of;//文件菜單項的圖標對象
  21. private JLabel startbar;//狀態欄
  22. private DrawArea drawarea;//畫布類的定義
  23. private Help helpobject; //定義一個幫助類對象
  24. private FileClass fileclass ;//文件對象
  25. String[] fontName;
  26. //定義工具欄圖標的名稱
  27. private String names[] = {"newfile","openfile","savefile","pen","line"
  28. ,"rect","frect","oval","foval","circle","fcircle"
  29. ,"roundrect","froundrect","rubber","color"
  30. ,"stroke","word"};//定義工具欄圖標的名稱
  31. private Icon icons[];//定義圖象數組
  32. private String tiptext[] = {//這裡是鼠標移到相應的按鈕上給出相應的提示
  33. "新建一個圖片","打開圖片","保存圖片","隨筆畫","畫直線"
  34. ,"畫空心的矩形","填充矩形","畫空心的橢圓","填充橢圓"
  35. ,"畫空心的圓","填充圓","畫圓角矩形","填充圓角矩形"
  36. ,"橡皮擦","顏色","選擇線條的粗細","文字的輸入"};
  37. JButton button[];//定義工具條中的按鈕組
  38. private JCheckBox bold,italic;//工具條字體的風格(復選框)
  39. private JComboBox stytles ;//工具條中的字體的樣式(下拉列表)
  40. public DrawPad(String string) {
  41. // TODO 主界面的構造函數
  42. super(string);
  43. //菜單的初始化
  44. file = new JMenu("文件");
  45. color = new JMenu("顏色");
  46. stroke = new JMenu("畫筆");
  47. help = new JMenu("幫助");
  48. bar = new JMenuBar();//菜單條的初始化
  49. //菜單條添加菜單
  50. bar.add(file);
  51. bar.add(color);
  52. bar.add(stroke);
  53. bar.add(help);
  54. //界面中添加菜單條
  55. setJMenuBar(bar);
  56. //菜單中添加快捷鍵
  57. file.setMnemonic('F');//既是ALT+“F”
  58. color.setMnemonic('C');//既是ALT+“C”
  59. stroke.setMnemonic('S');//既是ALT+“S”
  60. help.setMnemonic('H');//既是ALT+“H”
  61. //File 菜單項的初始化
  62. try {
  63. Reader reader = new InputStreamReader(getClass().getResourceAsStream("/icon"));//讀取文件以類路徑為基准
  64. } catch (Exception e) {
  65. // TODO 文件讀取錯誤
  66. JOptionPane.showMessageDialog(this,"圖片讀取錯誤!","錯誤",JOptionPane.ERROR_MESSAGE);
  67. }
  68. nf = new ImageIcon(getClass().getResource("/icon/newfile.jpg"));//創建圖表
  69. sf = new ImageIcon(getClass().getResource("/icon/savefile.jpg"));
  70. of = new ImageIcon(getClass().getResource("/icon/openfile.jpg"));
  71. newfile = new JMenuItem("新建",nf);
  72. openfile = new JMenuItem("打開",of );
  73. savefile = new JMenuItem("保存",sf);
  74. exit = new JMenuItem("退出");
  75. //File 菜單中添加菜單項
  76. file.add(newfile);
  77. file.add(openfile);
  78. file.add(savefile);
  79. file.add(exit);
  80. //File 菜單項添加快捷鍵
  81. newfile.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK));
  82. openfile.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK));
  83. savefile.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));
  84. exit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E,InputEvent.CTRL_MASK));
  85. //File 菜單項的注冊監聽
  86. newfile.addActionListener(this);
  87. openfile.addActionListener(this);
  88. savefile.addActionListener(this);
  89. exit.addActionListener(this);
  90. //Color 菜單項的初始化
  91. colorchoice = new JMenuItem("調色板");
  92. colorchoice.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK));
  93. colorchoice.addActionListener(this);
  94. color.add(colorchoice);
  95. //Help 菜單項的初始化
  96. helpmain = new JMenuItem("幫助主題");
  97. helpin = new JMenuItem("關於小小繪圖板");
  98. //Help 菜單中添加菜單項
  99. help.add(helpmain);
  100. help.addSeparator();//添加分割線
  101. help.add(helpin);
  102. //Help 菜單項的注冊監聽
  103. helpin.addActionListener(this);
  104. helpmain.addActionListener(this);
  105. //Stroke 菜單項的初始化
  106. strokeitem = new JMenuItem("設置畫筆");
  107. strokeitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,InputEvent.CTRL_MASK));
  108. stroke.add(strokeitem);
  109. strokeitem.addActionListener(this);
  110. //工具欄的初始化
  111. buttonpanel = new JToolBar( JToolBar.HORIZONTAL);
  112. icons = new ImageIcon[names.length];
  113. button = new JButton[names.length];
  114. for(int i = 0 ;i<names.length;i++)
  115. {
  116. icons[i] = new ImageIcon(getClass().getResource("/icon/"+names[i]+".jpg"));//獲得圖片(以類路徑為基准)
  117. button[i] = new JButton("",icons[i]);//創建工具條中的按鈕
  118. button[i].setToolTipText(tiptext[i]);//這裡是鼠標移到相應的按鈕上給出相應的提示
  119. buttonpanel.add(button[i]);
  120. button[i].setBackground(Color.red);
  121. if(i<3)button[i].addActionListener(this);
  122. else if(i<=16) button[i].addActionListener(this);
  123. }
  124. CheckBoxHandler CHandler = new CheckBoxHandler();//字體樣式處理類
  125. bold = new JCheckBox("粗體");
  126. bold.setFont(new Font(Font.DIALOG,Font.BOLD,30));//設置字體
  127. bold.addItemListener(CHandler);//bold注冊監聽
  128. italic = new JCheckBox("斜體");
  129. italic.addItemListener(CHandler);//italic注冊監聽
  130. italic.setFont(new Font(Font.DIALOG,Font.ITALIC,30));//設置字體
  131. GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();//計算機上字體可用的名稱
  132. fontName = ge.getAvailableFontFamilyNames();
  133. stytles = new JComboBox(fontName);//下拉列表的初始化
  134. stytles.addItemListener(CHandler);//stytles注冊監聽
  135. stytles.setMaximumSize(new Dimension(400,50));//設置下拉列表的最大尺寸
  136. stytles.setMinimumSize(new Dimension(250,40));
  137. stytles.setFont(new Font(Font.DIALOG,Font.BOLD,20));//設置字體
  138. //工具欄中添加字體式樣
  139. buttonpanel.add(bold);
  140. buttonpanel.add(italic);
  141. buttonpanel.add(stytles);
  142. //狀態欄的初始化
  143. startbar = new JLabel("我的小小繪圖板");
  144. //繪畫區的初始化
  145. drawarea = new DrawArea(this);
  146. helpobject = new Help(this);
  147. fileclass = new FileClass(this,drawarea);
  148. Container con = getContentPane();//得到內容面板
  149. con.add(buttonpanel, BorderLayout.NORTH);
  150. con.add(drawarea,BorderLayout.CENTER);
  151. con.add(startbar,BorderLayout.SOUTH);
  152. Toolkit tool = getToolkit();//得到一個Tolkit類的對象(主要用於得到屏幕的大小)
  153. Dimension dim = tool.getScreenSize();//得到屏幕的大小 (返回Dimension對象)
  154. setBounds(40,40,dim.width-70,dim.height-100);
  155. setVisible(true);
  156. validate();
  157. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  158. }
  159. //設置狀態欄顯示的字符
  160. public void setStratBar(String s) {
  161. startbar.setText(s);
  162. }
  163. public void actionPerformed(ActionEvent e) {
  164. // TODO 事件的處理
  165. for(int i = 3; i<=13;i++)
  166. {
  167. if(e.getSource() ==button[i])
  168. {
  169. drawarea.setCurrentChoice(i);
  170. drawarea.createNewitem();
  171. drawarea.repaint();
  172. }
  173. }
  174. if(e.getSource() == newfile||e.getSource() == button[0])//新建
  175. {fileclass.newFile();}
  176. else if(e.getSource() == openfile||e.getSource() == button[1])//打開
  177. {fileclass.openFile();}
  178. else if(e.getSource() == savefile||e.getSource() == button[2])//保存
  179. {fileclass.saveFile();}
  180. else if(e.getSource() == exit)//退出程序
  181. {System.exit(0);}
  182. else if(e.getSource() == colorchoice||e.getSource() == button[14])//彈出顏色對話框
  183. {
  184. drawarea.chooseColor();//顏色的選擇
  185. }
  186. else if(e.getSource() == button[15]||e.getSource()==strokeitem)//畫筆粗細
  187. {
  188. drawarea.setStroke();//畫筆粗細的調整
  189. }
  190. else if(e.getSource() == button[16])//添加文字
  191. { JOptionPane.showMessageDialog(null, "請單擊畫板以確定輸入文字的位置!","提示"
  192. ,JOptionPane.INFORMATION_MESSAGE);
  193. drawarea.setCurrentChoice(14);
  194. drawarea.createNewitem();
  195. drawarea.repaint();
  196. }
  197. else if(e.getSource() == helpin)//幫助信息
  198. {helpobject.AboutBook();}
  199. else if(e.getSource() == helpmain)//幫助主題
  200. {helpobject.MainHeip();}
  201. }
  202. //字體樣式處理類(粗體、斜體、字體名稱)
  203. public class CheckBoxHandler implements ItemListener
  204. {
  205. public void itemStateChanged(ItemEvent ie) {
  206. // TODO 字體樣式處理類(粗體、斜體、字體名稱)
  207. if(ie.getSource() == bold)//字體粗體
  208. {
  209. if(ie.getStateChange() == ItemEvent.SELECTED)
  210. drawarea.setFont(1, Font.BOLD);
  211. else
  212. drawarea.setFont(1, Font.PLAIN);
  213. }
  214. else if(ie.getSource() == italic)//字體斜體
  215. {
  216. if(ie.getStateChange() == ItemEvent.SELECTED)
  217. drawarea.setFont(2, Font.ITALIC);
  218. else drawarea.setFont(2, Font.PLAIN);
  219. }
  220. else if(ie.getSource() == stytles)//字體的名稱
  221. {
  222. drawarea.stytle = fontName[stytles.getSelectedIndex()];
  223. }
  224. }
  225. }
  226. }
Copyright © Linux教程網 All Rights Reserved