你好,游客 登录 注册 搜索
背景:
阅读新闻

非常值得学习的java 绘图板源代码

[日期:2011-11-05] 来源:Linux社区  作者:afgasdg [字体: ]
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

java

  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. }  
linux
本文评论   查看全部评论 (2)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款
第 2 楼
* 222 发表于 2012/3/4 17:46:15
加载图片的时候错误:java.io.StreamCorruptedException: invalid stream header: FFD8FFE0
求解答
第 1 楼
* 22 发表于 2012/3/4 9:41:36
windows系统用不了啊