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

📄 toolpanel.java

📁 用java编写的画图面板程序(有源代码)
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
		pnStroke.setVisible(false);
		pnSquare.setVisible(false);
		paintModePanel.setVisible(false);

		if ("move".equals(s) || "getcolor".equals(s)) {
			welcomePanel.setVisible(true);
		}
		else if("colorfill".equals(s)){
			paintModePanel.setVisible(true);
		}else if ("pencil".equals(s) || "line".equals(s)) {
			pnStroke.setVisible(true);
		} else {
			if (s.startsWith("fill")) {
				paintModePanel.setVisible(true);
				if ("fillrect".equals(s)) {
					pnSquare.setType(BaseObject.RECTANGLE);
				} else if ("fillroundrect".equals(s)) {
					pnSquare.setType(BaseObject.ROUNDRECT);
				} else if ("filloval".equals(s)) {
					pnSquare.setType(BaseObject.OVAL);
				}
				pnSquare.setVisible(true);
			} 
			else if("rotate".equals(s)){
				
			}
            else if("erase".equals(s)){
				
			}else {
				pnStroke.setVisible(true);
				if ("rect".equals(s)) {
					pnSquare.setType(BaseObject.RECTANGLE);
				} else if ("roundrect".equals(s)) {
					pnSquare.setType(BaseObject.ROUNDRECT);
				} else if ("oval".equals(s)) {
					pnSquare.setType(BaseObject.OVAL);
				}
				pnSquare.setVisible(true);
			}
		}
	}
}

//选择画笔粗细的Panel
class StrokePanel extends JPanel {
	private int length;
	private int size;
	private float stroke;
	
	public StrokePanel(int l) {
		stroke=1.0f;
		length=l;
		size=12;
		setSize(50,l*12+6);
		addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				int y=e.getY()-4;
				y/=size;
				y++;
				setStroke((float)y);
				Container c=getParent().getParent();
				if (c instanceof ToolPanel) {
					ToolPanel t=(ToolPanel)c;
					t.setStroke((float)y);
				}
			}
		});
	}
	
	public void setStroke(float f) {
		if (f>(float)length) f=(float)length;
		stroke=f;
		repaint();
	}
	public float getStrok() {
		return stroke;
	}
	
	public void paint(Graphics g) {
		super.paint(g);
		int w=getWidth()-1;
		int h=getHeight()-1;
		g.setColor(Color.GRAY);
		g.drawLine(0,0,w,0);
		g.drawLine(0,0,0,h);
		g.setColor(Color.WHITE);
		g.drawLine(0,h,w,h);
		g.drawLine(w,0,w,h);
		
		int is=(int)stroke;
		if (is>length) is=length;
		is--;
		g.setColor(new Color(0x33,0x99,0xff));
		g.fillRect(3,is*size+3,w-5,size-1);
		
		g.setColor(Color.BLACK);
		for (int i=0; i<length; i++) {
			if (is==i) g.setColor(Color.WHITE);
			for (int j=0; j<=i; j++) {
				int y=(int)(i*(size-0.5))+j+8;
				g.drawLine(5,y,w-7,y);
			}
			if (is==i) g.setColor(Color.BLACK);
		}
	}
}

//选择是否是正二维图形的Panel
class SquarePanel extends JPanel {
	private boolean isSquare;
	private int type;
	
	public SquarePanel(int l) {
		type=BaseObject.RECTANGLE;
		isSquare=false;
		setSize(50,64);
		addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				int y=e.getY();
				if (y>=4&&y<32)
					setSquare(false);
				else if (y>32&&y<=60)
					setSquare(true);
				Container c=getParent().getParent();
				if (c instanceof ToolPanel) {
					ToolPanel t=(ToolPanel)c;
					t.setSquare(isSquare);
				}
			}
		});
	}
	public void setType(int i) {
		type=i;
		repaint();
	}
	public void setSquare(boolean square) {
		isSquare=square;
		repaint();
	}
	
	public void paint(Graphics g) {
		super.paint(g);
		int w=getWidth()-1;
		int h=getHeight()-1;
		g.setColor(Color.GRAY);
		g.drawLine(0,0,w,0);
		g.drawLine(0,0,0,h);
		g.setColor(Color.WHITE);
		g.drawLine(0,h,w,h);
		g.drawLine(w,0,w,h);
		
		int is=0;
		if (isSquare)
			is=1;
		g.setColor(new Color(0x33,0x99,0xff));
		g.fillRect(3,is*28+3,w-5,28);
		
		if (is==0) {
			g.setColor(Color.WHITE);
			if (type==BaseObject.RECTANGLE)
				g.drawRect((w-36)/2,7,36,18);
			else if (type==BaseObject.ROUNDRECT)
				g.drawRoundRect((w-36)/2,7,36,18,8,8);
			else if (type==BaseObject.OVAL)
				g.drawOval((w-36)/2,7,36,18);
			g.setColor(Color.BLACK);
			if (type==BaseObject.RECTANGLE)
				g.drawRect((w-18)/2,35,18,18);
			else if (type==BaseObject.ROUNDRECT)
				g.drawRoundRect((w-18)/2,35,18,18,8,8);
			else if (type==BaseObject.OVAL)
				g.drawOval((w-18)/2,35,18,18);
		} else {
			g.setColor(Color.BLACK);
			if (type==BaseObject.RECTANGLE)
				g.drawRect((w-36)/2,7,36,18);
			else if (type==BaseObject.ROUNDRECT)
				g.drawRoundRect((w-36)/2,7,36,18,8,8);
			else if (type==BaseObject.OVAL)
				g.drawOval((w-36)/2,7,36,18);
			g.setColor(Color.WHITE);
			if (type==BaseObject.RECTANGLE)
				g.drawRect((w-18)/2,35,18,18);
			else if (type==BaseObject.ROUNDRECT)
				g.drawRoundRect((w-18)/2,35,18,18,8,8);
			else if (type==BaseObject.OVAL)
				g.drawOval((w-18)/2,35,18,18);
		}
		
	}
}

//欢迎提示的Panel
class WelcomePanel extends JPanel {
	
	public WelcomePanel() {
		/*JLabel lbl1=new JLabel("按Ctrl再");
		JLabel lbl2=new JLabel("点击鼠标");
		JLabel lbl3=new JLabel("会有彩蛋");
		JLabel lbl4=new JLabel("哦~~");
		setLayout(new GridLayout(0,1));
		setSize(50,75);
		add(lbl1);
		add(lbl2);
		add(lbl3);
		add(lbl4);*/
	}
	
	public void paint(Graphics g) {
		super.paint(g);
		int w=getWidth()-1;
		int h=getHeight()-1;
		g.setColor(Color.GRAY);
		g.drawLine(0,0,w,0);
		g.drawLine(0,0,0,h);
		g.setColor(Color.WHITE);
		g.drawLine(0,h,w,h);
		g.drawLine(w,0,w,h);
	}
}

//选择填充方式的Panel
class PaintModePanel extends JPanel {
	private int type;	//0-标准填充, 1-水平渐变, 2-垂直渐变, 3-对角渐变
	private Color c1,c2;
	
	public PaintModePanel() {
		type=0;
		setSize(50,132);
		c1=Color.BLACK;
		c2=Color.WHITE;
		addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				int x=e.getX();
				int y=e.getY();
				type=0;
				type=(y/25);
				if (type>4)
					type=4;
				setPaintMode(type);
				Container c=getParent().getParent();
				if (c instanceof ToolPanel) {
					ToolPanel tp=(ToolPanel)c;
					tp.setPaintMode(type);
				}
			}
		});
	}
	public void setPaintMode(int i) {
		type=i;
		repaint();
	}
	public void changeColor(Color t1,Color t2) {
		if (t1!=null&&t2!=null) {
			c1=t1;
			c2=t2;
			repaint();
		}
	}
	public void paint(Graphics g) {
		super.paint(g);
		Graphics2D g2d=(Graphics2D)g;
		//g2d.setTransform(new AffineTransform());
		int w=getWidth()-1;
		int h=getHeight()-1;
		g2d.setColor(Color.GRAY);
		g2d.drawLine(0,0,w,0);
		g2d.drawLine(0,0,0,h);
		g2d.setColor(Color.WHITE);
		g2d.drawLine(0,h,w,h);
		g2d.drawLine(w,0,w,h);
		
		g2d.setColor(new Color(0x33,0x99,0xff));
		g2d.fillRect(3,type*22+3+type*3,46,28);
		
		g2d.setColor(c1);
		g2d.fillRect(6,6,40,22);
				
		g2d.setColor(Color.GRAY);
		g2d.fillRect(6, 106, 40, 22);
		
		g2d.setColor(Color.WHITE);
		g2d.drawString(" 手 动", 6, 120);
		
		g2d.setPaint(new GradientPaint(new Point(6,31),c1,new Point(46,31),c2));
		g2d.fillRect(6,31,40,22);
		
		g2d.setPaint(new GradientPaint(new Point(6,56),c1,new Point(6,78),c2));
		g2d.fillRect(6,56,40,22);
		
		g2d.setPaint(new GradientPaint(new Point(6,81),c1,new Point(46,103),c2));
		g2d.fillRect(6,81,40,22);

		//repaint();
	}
}

⌨️ 快捷键说明

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