`
lj_gzy2014
  • 浏览: 16692 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

java图形化用户界面

    博客分类:
  • java
 
阅读更多

          在前面我们实现了画一条直线,那么如何画曲线呢?如何让画笔如同手中的铅笔一样想怎样画就怎样画?那么今天就来实现画铅笔线。

package PaintBoard;

import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;

import javax.swing.JFrame;

public class MyPanint extends JFrame {

	public void showUI(){
		
		this.setSize(400, 400);
		this.setLocationRelativeTo(null);
		this.setDefaultCloseOperation(3);
		this.setTitle("简易画图板");
		
		this.setVisible(true);	
		Graphics g=this.getGraphics();
		Listener1 lisn1=new Listener1(g);
		this.addMouseMotionListener(lisn1);
		this.addMouseListener(lisn1);
	}
	
//	public void paint(Graphics g){
//		super.paint(g);
//	}
	public static void main(String[] args) {
		MyPanint mp=new MyPanint();
		mp.showUI();

	}
}

 

package PaintBoard;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.util.ArrayList;

public class Listener1 implements MouseListener,MouseMotionListener{
      int x1,y1,x2,y2;
      int x,y;
     ArrayList<Position> list1=new ArrayList<>();
     ArrayList<Position> list2=new ArrayList<>();
     private  Graphics g;
	 public Listener1(Graphics g) {
		this.g = g;
	}
	public void mouseClicked(MouseEvent e) {
		
		
	}

	
	public void mousePressed(MouseEvent e) {
		
		
	}

	
	public void mouseReleased(MouseEvent e) {
		 x2=e.getX();
		 y2=e.getY();
		 Position pos=new Position(x2, y2);
		 list1.add(pos);
		
	}

	
	public void mouseEntered(MouseEvent e) {
		
		
	}

	
	public void mouseExited(MouseEvent e) {
		
		
	}

	public void mouseDragged(MouseEvent e) {
		x=e.getX();
		y=e.getY();
		Position ps=new Position(x, y);
		list2.add(ps);
		System.out.println(""+list2.size());
		for(int i=1;i<list2.size();i++){
			
			Position pos1=list2.get(i-1);
			Position pos2=list2.get(i);
         if(Math.abs(pos1.getX()-pos2.getX())>10||Math.abs(pos1.getY()-pos2.getY())>10){
        	 continue;
         }else{
        	 g.setColor(Color.RED);
			g.drawLine(pos1.getX()	,pos1.getY(),pos2.getX(), pos2.getY());
			}
		}
		
	}
	
	public void mouseMoved(MouseEvent e) {
//		 x1=e.getX();
//		 y1=e.getY();
//		 System.out.println(""+x1);
		
	}

}

 

package PaintBoard;

public class Position {
	int x,y;

	public int getX() {
		return x;
	}

	public void setX(int x) {
		this.x = x;
	}

	public int getY() {
		return y;
	}

	public void setY(int y) {
		this.y = y;
	}

	public Position(int x, int y) {
		this.x = x;
		this.y = y;
	}
}

 

       铅笔线实现的思想就是将鼠标拖拽移动的点的坐标存在链表里面,然后遍历链表,将线条画出来。

画图板就写到这里,只是写了比较典型的一些功能,其余的大多比较的简单,有兴趣的同学可以试着做出电脑上面画图板的效果。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics