`
15700786134
  • 浏览: 4746 次
  • 性别: Icon_minigender_2
社区版块
存档分类
最新评论

画图板的基本实现

 
阅读更多

 要实现画图板的基本功能,除了在qq登陆界面中用到的组件和方法外,还需要添加鼠标监听器,和接口实现。

首先,需要显示一个JFrame界面:

public class DrameFrame extends JFrame {
              //显示界面
     public void initUI(){
         this.setSize(600,600);
         this.setTitle("画图板");
         this.setDefaultCloseOperation(3);
         this.setLocationRelativeTo(null);
         this.setVisible(true);
         //从窗体上获取画笔,在窗体可见之后获取
         Graphics g=this.getGraphics();

}

 

 

  然后需要给界面添加监听器,获取点击时的坐标,

 DrameListener d=new DrameListener();
         //给窗体对象增添鼠标监听器
        this.addMouseListener(d);       

 

 

在新写一个类用于实现鼠标监听器接口,实现接口需要重写其中所有方法,在方法中添加自己希望实现的功能,包括获取点击时的坐标,绘制各种图形,代码如下:

 

public class DrameListener implements MouseListener,MouseMotionListener{
    private int x1,x2,y1,y2;                       //点击时获得的坐标,MouseMotionListener是用于实现拖动事件
    private Graphics g;                            
    private String s;                                 //s用于获得文本框中的字符串
    private ButtonListener but;
    private Color color;                             
    private int ax,ay,bx,by,cx,cy;                      //画三角形的坐标
    private int flag=1;                    
   
    public String getS(){
        return s;
    }
   
    //
    public void setBut(ButtonListener but){
        this.but = but;
    }
   
    public void setG(Graphics g){
        this.g=g;
    }

    @Override
    public void mouseClicked(MouseEvent e) {
        //通过标志找到点击过的点
        if(flag == 1 && s.equals("三角形")){
            ax = e.getX();
            ay = e.getY();
            flag++;
        }else if(flag == 2){
            bx = e.getX();
            by = e.getY();
            flag++;
        }else if(flag == 3){
            cx = e.getX();
            cy = e.getY();
            g.drawLine(ax, ay,bx, by);
            g.drawLine(bx, by,cx, cy);
            g.drawLine(ax, ay,cx, cy);
            flag = 1;
        }
    }

    @Override
    public void mousePressed(MouseEvent e) {
        x1=e.getX();
        y1=e.getY();
        s = but.getS();
        color =  but.getColor();                      
        g.setColor(color);                                           //按下时获得颜色
        System.out.println("but,getS()="+s);
    }

    @Override
    public void mouseReleased(MouseEvent e) {
        x2=e.getX();
        y2=e.getY();
        if(s.equals("直线")){
            System.out.println("x2 = "+x2 +"     y2 = "+y2);
            g.drawLine(x1, y1, x2, y2);
        }
        else if(s.equals("椭圆")){
                for(int i=1;i<=100;i++){
                g.setColor(new Color(2*i,i+100,0));
                g.fillOval(x1+i/2, y1+i/2, Math.abs(x1-x2)-i, Math.abs(y2-y1)-i);
                }
        }
        else if(s.equals("矩形")){
            g.drawLine(x1, y1, x1,y2);
            g.drawLine(x1, y1, x2, y1);
            g.drawLine(x2, y1, x2, y2);
            g.drawLine(x1, y2, x2, y2);
        }
//        else if(s.equals("三角形")){
//           g.drawLine(x1, y1, x2, y2);
//           g.drawLine(x1, y1, x1, y2);
//           g.drawLine(x1, y2, x2, y2);
//        }
    }

    @Override
    public void mouseEntered(MouseEvent e) {
       
    }

    @Override
    public void mouseExited(MouseEvent e) {
       
    }
  
    //实现拖动
    public void mouseDragged(MouseEvent e) {
        System.out.println(">>>>>>>>>>>");
        // TODO Auto-generated method stub
        if(s.equals("铅笔")){
        x2=e.getX();
        y2=e.getY();
        g.drawLine(x1, y1, x2, y2);
        x1=x2;y1=y2;
    }
    }

    @Override
    public void mouseMoved(MouseEvent e) {
        // TODO Auto-generated method stub
   
    }
}

 

 

 

在添加一个类,用于侦听获取点击时按钮中的文字或颜色:

public class ButtonListener implements ActionListener {
        private String s  = "直线";
        private Color color;
       
        public String getS(){
            return s;
        }
        public Color getColor(){
            return color;
        }
    @Override
    public void actionPerformed(ActionEvent e) {

         if(e.getActionCommand().equals("")){
             //获取当前事件源对象
             JButton jbu=(JButton)e.getSource();
             //获取颜色按钮的背景色
            color =  jbu.getBackground();
            System.out.println("color= "+color);
         }else {
                //    获取按钮上的字符串
             s = e.getActionCommand();
         }
//        System.out.println("s = "+s);
    }
}


在实现过程中,需要注意的有画笔和参数的传递,监听器的正确添加,按钮中文字或颜色的正确获取。

分享到:
评论

相关推荐

    java 画图板 windows画图板简单实现

    用java实现的windows画图板的简单模式,对于java初学者的事件触发器学习有很好的帮助。。。

    基于qt实现的画图板

    基于qt实现的画图板,内含基本的绘画功能,例如选取画笔,填充,图像打开和保存等。

    画图板(C#实现

    自己用C#写的画图板程序,能够画出直线、圆、矩形等基本图形

    仿windows画图板

    仿windows画图板程序,基本实现windows画图板的功能

    android简单的画图板实现代码

    这是一款android的画图板实现代码,基本功能齐全,适合初学者开发的例子程序。

    java画图板 实现基本画图功能

    用java实现的小型画图板,具备基本的画图功能,如画四方形、画圆、画三角形、画多边形还有橡皮擦功能。

    Java 实现画图板

    实现了基本的绘画,包括圆、椭圆、直线、矩形、文本。

    C# 画图板 源代码 实现了基本功能

    这个是本人用C#写的一个画图板程序,实现了画轨迹,直线,矩形,椭圆,圆角矩形。可以取前景色,背景色,可以显示鼠标的坐标,可以保存当前所画的内容等等功能,总的来说,功能不是很强大,但是作为一个写画图板的...

    C#实现的画图板,基本功能都有

    C#实现画图,基本功能都有,供需要的朋友参考

    VC++画图板论文

    1.具有标准Windows应用程序的...2.通过选择菜单或工具栏中相应功能完成基本几何图形的绘制(基本几何图形包括直线、圆、椭圆、矩形、多边形、扇形、弧等); 3.几何图形实现存盘和读取显示功能; 4.应用程序界面友好。

    java画图板源代码

    对于这个程序的实现的基本思路是:通过鼠标事件获取面板上的坐标位置,作为绘图的参数和顶点。由于要求设置出画笔的粗细和颜色我们可以把我们获取的面板的Graphic强制转化为Graphi2D对象,职业我们就可以获得更多的...

    Java 画图板(基本图形、撤销、清空、重复)

    用Java模拟画图板,实现基本图形的绘画,并支持撤销、清空、重复功能,可提供颜色选择。。。

    画图板.rar

    基于Visu C++技术的画图板,采用MFC框架,可以实现一些基本的画图板功能

    QS模仿windows画图板源码.zip

    这是一款基于WinForm应用程序的画图板主要实现了一下功能 1、操作:主要包括读取图片、和图片操作后的保存 2、图像工具栏:主要包括椭圆、铅笔、矩形、三角形、直线等画图工具的使用 3、画笔:主要包括画笔的粗细...

    C# 实现画图软件

    C# 画图 可实现调色板 铅笔 圆形 矩形 保存 等基本画图功能

    JAVA开发的画图板程序

    JAVA编写的简易画图板程序,采用GUI图形界面 能够实现画图板的基本功能

    C#。NET2.0画图板

    用C#。NET2.0做的画图板,实现了基本的功能

    画图板小程序

    用MFC实现画图板的基本功能~并且附有简单的介绍~

    简单的画图板源码 C#

    简单的画图板源码 用VS2008的C#编写的,主要用于学习多态,实现了基本功能,画线、画圆等

    java 课程设计 简单的画图板

    用java 写的简单的画图板程序 实现了文件的保存 打开 读取和一些基本图形的画法 比较简单

Global site tag (gtag.js) - Google Analytics