⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pictureboard.java

📁 java语言实现的类似windows自带画图工具的绘图工具
💻 JAVA
字号:
/*
 * 创建日期 2005-11-5
 *
 * TODO 要更改此生成的文件的模板,请转至
 * 窗口 - 首选项 - Java - 代码样式 - 代码模板
 */
package src;

/**
 * @author flash
 *
 * TODO 要更改此生成的类型注释的模板,请转至 窗口 - 首选项 - Java - 代码样式 - 代码模板
 */

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

public class PictureBoard extends JPanel implements MouseListener,
MouseMotionListener {
	//toobar
	public int line = 1;

	public int rect = 0;

	public int oval = 0;

	public int poly = 0;


	public int all_clear = 0;

	public Color fill_color = Color.WHITE;

	public Color line_color = Color.BLUE;

	public Color back_color = Color.gray;

	public Stroke line_stroke = null;

	public Stroke xiangpi_stroke = null;

	//工具定义
	private final int NULL = 0;

	private final int PENCIL = 1;

	private final int LINE = 2;

	private final int RECTANGLE = 3;

	private final int CIRCLE = 4;

	private final int POLYGON = 5;

	private final int ERASE = 6;

	public int TOOL_CHOOSED = 0;

	public Color back = null;

	//定义一个造型工具
	Picture picture_target = null;

        CUi cui = null;

	//记忆图形工具
	PictureMemory picturememory_array = null;

	PictureMemory del_picturememory_array = null;

	//构造函数
	public PictureBoard(CUi cui) {

                this.cui = cui;
		line_stroke = new BasicStroke(1.0f);
		xiangpi_stroke = new BasicStroke(1.0f);

		this.setBorder(BorderFactory.createEtchedBorder());
		picturememory_array = new PictureMemory();
		del_picturememory_array = new PictureMemory();

		back = this.getForeground();
		this.addMouseListener(this);
		this.addMouseMotionListener(this);
	}

	//初始化不同对象
	public void mousePressed(MouseEvent ep) {
         cui.status.setText(label_text()+ep.getX()+", "+ep.getY());
		if (ep.getButton() == MouseEvent.BUTTON1) {
			switch (TOOL_CHOOSED) {
			case NULL://选择箭头工具
				this.setCursor(Cursor.getDefaultCursor());
				break;
			case PENCIL://选择铅笔工具
				this.setCursor(Cursor
						.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));
				picture_target = new Pencil(line_stroke, line_color, ep.getX(),
						ep.getY());
				break;
			case LINE://选择直线工具
				this.setCursor(Cursor
						.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));
				picture_target = new Line_(line_stroke, line_color, ep.getX(),
						ep.getY(), line);
				System.out.println(picture_target);
				break;
			case RECTANGLE://选择矩形工具
				this.setCursor(Cursor
						.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));
				picture_target = new Rectangle_(line_stroke, line_color,
						fill_color, ep.getX(), ep.getY(), rect);
				break;
			case CIRCLE://选择圆工具
				this.setCursor(Cursor
						.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));
				picture_target = new Circle(line_stroke, line_color,
						fill_color, ep.getX(), ep.getY(), oval);
				break;
			case POLYGON://选择多边形
				this.setCursor(Cursor
						.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));
				picture_target = new Polygon_(line_stroke, line_color,
						fill_color, ep.getX(), ep.getY(), poly);
				break;
			case ERASE:
				back = this.getBackground();
				this.setCursor(Cursor
						.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));
				picture_target = new Erase(xiangpi_stroke, back, ep.getX(), ep
						.getY());
			}
			if (picture_target != null)
				picturememory_array.addObject(picture_target);
			repaint();
		} else if (ep.getButton() == MouseEvent.BUTTON3) {
			//弹出菜单
		}
	}

	public void mouseDragged(MouseEvent ed) {
                cui.status.setText(label_text()+ed.getX()+", "+ed.getY());
		if (picture_target != null) {
			picture_target.dataCollect(ed);
		}
		repaint();
	}

	public void mouseMoved(MouseEvent e) {
                cui.status.setText(label_text()+e.getX()+", "+e.getY());
	}

	public void mouseExited(MouseEvent e) {
                cui.status.setText(label_text()+e.getX()+", "+e.getY());
	}

	public void mouseReleased(MouseEvent e) {
                cui.status.setText(label_text()+e.getX()+", "+e.getY());
		if (e.getButton() == MouseEvent.BUTTON1)
			picture_target = null;
	}

	public void mouseEntered(MouseEvent e) {
          cui.status.setText(label_text()+e.getX()+", "+e.getY());
	}

	public void mouseClicked(MouseEvent e) {
          cui.status.setText(label_text()+e.getX()+", "+e.getY());
	}

	public void paint(Graphics g) {

		super.paint(g);
		this.setBackground(back_color);
		int size_ = picturememory_array.getSize();
		Graphics2D g1 = (Graphics2D) g;
		if (size_ != 0) {
			for (int i = 0; i < size_; i++) {
				((Picture) (picturememory_array.getObject(i))).drawSelf(g1);
				//System.out.println(((Picture)(picturememory_array.getObject(i))));
			}
		}
	}
        private  String label_text(){
           String x = "";
           switch (TOOL_CHOOSED) {
                         case 0://选择箭头工具
                           x="没有选择工具"+"  鼠标位置:";
                           break;
                         case 1://选择铅笔工具
                           x="选择铅笔工具"+"  鼠标位置:";
                           break;
                         case 2://选择直线工具
                           x="选择直线工具"+"  鼠标位置:";
                           break;
                         case 3://选择矩形工具
                          x= "选择矩形工具"+"  鼠标位置:";
                          break;
                         case 4://选择圆工具
                           x="选择圆工具"+"  鼠标位置:";
                           break;
                         case 5://选择多边形
                           x="选择多边形工具"+"  鼠标位置:";
                           break;
                         case 6:
                           x="选择橡皮工具"+"  鼠标位置:";
                         }
                         return x;
         }


}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -