歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

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

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