画笔程序说明

//In the last version I have finish the function to write a line ...
//This version 0.2 will add more fun things...

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class DrawPad extends Frame {
	IDrawPad idp;
	JButton b1;
	JButton b2;
	JPanel jpl;
	
	public void init() {
		idp=new IDrawPad(this);
		jpl=new JPanel(new GridLayout(1,2,10,10));
		b1=new JButton("Black");
		b2=new JButton("Other");
		//add(idp);
		add(idp,BorderLayout.CENTER);
		add(jpl,BorderLayout.NORTH);
		jpl.add(b1);
		jpl.add(b2);
		b1.addActionListener(idp);
		idp.init();
		idp.setBackground(Color.magenta);
		this.setBackground(Color.white);
		this.setVisible(true);
		addWindowListener(new WindowAdapter(){

			@Override
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
			
		});
	}
	
	public static void main(String args[]) {
		new DrawPad().init();
	}
}

class IDrawPad extends JPanel implements ActionListener{
	DrawPad dp;
	IDrawPad(DrawPad dp) {
		this.dp=dp;
		
	}
	Color c=new Color(0, 150, 150);
	Point Frond=new Point(0,0);
	Point Back=new Point(0,0);
	Image tem;
	int i=1;
	boolean s_s;
	@SuppressWarnings("deprecation")
	public void actionPerformed(ActionEvent e) {
		if(i%4==3) {
			dp.b1.setLabel("CYAN");
			c=Color.cyan;
			dp.b1.setBackground(c);
			i++;
//System.out.println(i);
		}
		
		else if(i%4==2){
			dp.b1.setLabel("Black");
			c=Color.black;
			dp.b1.setBackground(c);

			i++;
//System.out.println(i);
		}
		else if(i%4==1) {
			dp.b1.setLabel("RED");
			c=Color.red;
			dp.b1.setBackground(c);

			i++;
//System.out.println(i);
		}
		else if(i%4==0) {
			dp.b1.setLabel("BLUE");
			c=Color.blue;
			dp.b1.setBackground(c);

			i++;
//System.out.println(i);
		}		
	}
	public void init() {
		
		
		setBounds(100,100,700,550);
		setBackground(Color.orange);
		setVisible(true);
		this.addMouseMotionListener(new MouseE());
		this.addMouseListener(new MouseE());
		
	}

	public void update(Graphics g) {
		if(tem==null) {
			tem=this.createImage(700, 550);
		}
		Graphics tg=tem.getGraphics();
		paint(tg);
		g.drawImage(tem, 0, 0, null);
	}

	public void paint(Graphics g) {
		g.setColor(c);
		g.drawLine(Back.x, Back.y, Frond.x, Frond.y);
		Back=Frond;
	}

}

class MouseE extends MouseMotionAdapter implements MouseListener {
	IDrawPad y;
	@Override
	public void mouseClicked(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}
	@Override
	public void mousePressed(MouseEvent e) {
		y=(IDrawPad)e.getSource();
//System.out.println(y.Back);
		y.Back=e.getPoint();	
	}
	@Override
	public void mouseReleased(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}
	@Override
	public void mouseEntered(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}
	@Override
	public void mouseExited(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}
	public void mouseDragged(MouseEvent e) {
		y=(IDrawPad)e.getSource();
		y.Frond=e.getPoint();
		y.repaint();
	}
	
}

1.在最初,我直接在DrawPad上面作画,然后不断的update()这个画面....这样这个画面其实都是一个画板.但是实际中,我们只需要在一个画板区域作画...其他地方放置一个按键等功能...

2.所以我们需要在主窗口中添加一个可以画画的组件.也就是拥有paint()方法的一个组件...我们发现JPanel中有这个方法....所以我们新建一个IDrawPad从JPanel中继承...



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值