Canvas画直线程序

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

/**
 * Date: 11-12-30
 * Time: 16:08:00
 */
public class DrawLine extends JFrame implements ActionListener {
	private class MyCanvas extends Canvas {
		private String s_color;

		public void setS_color(String s_color) {
			this.s_color = s_color;
		}
		int x1, x2, y1, y2;
		public MyCanvas() {
			addMouseListener(new MouseAdapter() {
				public void mousePressed(MouseEvent event) {
					x1 = event.getX();
					y1 = event.getY();
				}
				public void mouseReleased(MouseEvent event) {
					x2 = event.getX();
					y2 = event.getY();
					Graphics g = getGraphics() ;
					if("red".equals(s_color)){
						g.setColor(Color.RED);
					} else{
						g.setColor(Color.BLUE);
					}
					g.drawLine(x1,y1,x2,y2);
				}
			});
		}
	}
	JPanel p = new JPanel();
	JButton b1 = new JButton("red"){{
        addActionListener(DrawLine.this);
    }};
	JButton b2 = new JButton("blue"){{
        addActionListener(DrawLine.this);
    }};
	MyCanvas canvas = new MyCanvas();

	public void actionPerformed(ActionEvent e) {
		canvas.setS_color(e.getActionCommand());
	}

	public DrawLine() {
		setFrame();
		getP().add(b1);
		JPanel buttom = new JPanel();
		buttom.setLayout(new GridLayout(1, 2));
		buttom.add(b1);
		buttom.add(b2);
		getP().add(buttom, BorderLayout.SOUTH);
		getP().add(canvas, BorderLayout.CENTER);
	}

	private JPanel getP() {
		return p;
	}

	private void setFrame() {
		setLayout(new BorderLayout());
		getP().setLayout(new BorderLayout());
		add(getP());
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setSize(300, 300);
		setVisible(true);
	}

	public static void main(String[] args) throws Exception {
		new DrawLine();
	}
}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值