用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - java代码库

应用--画图板

2015-12-20 作者: 永夜极光举报

[java]代码库

1.主类
package s1221画图板重绘撤销;
 
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.util.ArrayList;
import javax.swing.*;
 
public class Main1221 extends JFrame{
    ImageIcon image[]={
            new ImageIcon("E:/Michael/javaImage/扫雷图片/2.jpg"),//曲线
            new ImageIcon("E:/Michael/javaImage/扫雷图片/2.jpg"),//直线
            new ImageIcon("E:/Michael/javaImage/扫雷图片/2.jpg"), //矩形
            new ImageIcon("E:/Michael/javaImage/扫雷图片/2.jpg"),//椭圆
            };
     
     String st[]={"曲线","直线","矩形","椭圆","橡皮","颜色笔","填色","放大镜","刷子","圆角矩形","涂鸦","文字","多边形","填充矩形","文字","多边形","填充矩形"};
             
     Color b[] ={ Color.blue,Color.green,Color.lightGray,Color.orange,Color.black,
                Color.cyan,Color.darkGray,Color.gray,Color.magenta,Color.pink,Color.red,
                Color.yellow,Color.white,new Color(0,100,200),new Color(0,200,200)};
            static ArrayList<Shape> list = new ArrayList<Shape>();
     
             Mymouselisten l1=new Mymouselisten();    //创建监听对象
              
    public  Main1221()
    {      
           //设置窗体属性*********************************************
            this.setDefaultCloseOperation(3);//设置关闭的方式
            this.setLayout( new BorderLayout());//设置窗体为边框布局
            this.setSize(800, 600);//设置窗体的大小
            this.setTitle("画板");  //设置窗体的标题
            this.setResizable(true);//设置窗体不可改变大小
            this.setLocationRelativeTo(null);//设置窗体出现在屏幕中间
            //设置窗体属性*********************************************
 
            //创建按钮**************************************
 
            JMenuBar jbar=new JMenuBar();
            JMenuItem t1=new JMenuItem("撤销");
            JMenu m1=new JMenu("选项");
         
            t1.addActionListener(l1);
            m1.add(t1);    
            jbar.add(m1);
            this.setJMenuBar(jbar);
            //创建按钮***************************************
         
            //左边的面板************************************
            JPanel west=new JPanel();
            west.setPreferredSize(new Dimension(80,0));
            west.setBackground(Color.lightGray);
            this.add(west,BorderLayout.WEST);
            //左边的面板************************************
             
            //下方的面板********************************************
            JPanel south =new JPanel();
            south.setPreferredSize(new Dimension(0,100));
            south.setBackground(Color.pink);
            this.add(south,BorderLayout.SOUTH);
            //下方的面板*********************************************
             
             
            //绘画的面板**************************************************************
             JPanel drawpanel =new JPanel()
              {
                        public void paint(Graphics g)         //重写JPanel中的方法
                        {
                            super.paint(g);                            
                            list.forEach((shape)->shape.draw(g));  //lambda表达式          
                        }  
             };
            //绘画的面板**************************************************************
         
              
             //中间的面板********************************************
            JPanel center =new JPanel();
            center.setBackground(Color.GRAY);
            center.setLayout(new BorderLayout());
            center.add(drawpanel);
            this.add(center,BorderLayout.CENTER);
            //中间的面板*********************************************
             
            drawpanel.setBackground(Color.WHITE);      
            drawpanel.addMouseListener(l1);              //给监听方法传递监听的对象
            drawpanel.addMouseMotionListener(l1);        //虽然l1实现了多个接口,但是面板要监听鼠标拖动事件,要分别添加方法
             
             
            //**********************************窗体左边的选项栏***************************************//
            for(int i=0;i<image.length;i++)
            {
            JButton jb=new JButton(image[i]);
            jb.setActionCommand(st[i]);                      //给这个图标添加action command 方便在事件中获取
            jb.setPreferredSize(new Dimension(image[i].getIconWidth(),image[i].getIconHeight()));
            jb.setToolTipText(st[i]);
            jb.addActionListener(l1);
            west.add(jb);
            }            
            //*****************************************************************************************//
             
            //**********************************窗体下方颜色选择框***************************************// 
            for(Color i:b)
            {
             JButton jb1=new JButton("");  
             jb1.setBackground(i);
             jb1.setPreferredSize(new Dimension(30,30));
             jb1.addActionListener(l1);
             south.add(jb1);
            }
            //*****************************************************************************************//
             
            this.setVisible(true);                           //要先设置窗体可见,然后再传画笔 
            Graphics g=drawpanel.getGraphics();              //传递画笔 ,我一开始放在最后,结果不能显示!!!传画笔之前一定要先设置可见
            l1.setGraphics(g,list,drawpanel);          
    }
     
    public static void main(String[] args)
    { Main1221 k=new Main1221();}
}
    

[源代码打包下载]




网友评论    (发表评论)

共2 条评论 1/1页

发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...