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

📄 toolpanel.java

📁 用java编写的画图面板程序(有源代码)
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/**
 * @(#)ToolPanel.java
 */
package project.paint;

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

public class ToolPanel extends JToolBar implements ActionListener {

	public String[] sTexts={"移动","铅笔","填充","橡皮","旋转","直线","矩形","圆角矩形","椭圆"};

	public String[] sCmds={"move","pencil","colorfill","erase","rotate","line","rect","roundrect","oval"};
	
	public ImageIcon[] imgIcons=new ImageIcon[sCmds.length];

	PaintPanel instance;
	JPanel pnTool;
	JToggleButton[] btn=new JToggleButton[sCmds.length];

	JPanel pnButton;
	StrokePanel pnStroke;
	SquarePanel pnSquare;
	WelcomePanel welcomePanel;
	PaintModePanel paintModePanel;
	
	public ToolPanel(PaintPanel o) {
		super(JToolBar.VERTICAL);
		if (o==null)
			return;
		instance = o;
		
		for (int i=0; i<btn.length; i++) {
			try {
				imgIcons[i]=new ImageIcon(Project.class.getResource("/project/paint/icons/"+sCmds[i]+".gif"));		//TsPaint.class.getResource(
			}
			catch (Exception e) {
				System.out.println ("==============================");
				System.out.println ("Toolpanel(Object)方法出现异常:");
			}
			btn[i]=new JToggleButton("",imgIcons[i]);
			btn[i].setToolTipText(sTexts[i]);
			btn[i].setActionCommand(sCmds[i]);
		}

		pnButton=new JPanel(null);
		for (int i=0; i<btn.length; i++) {
			btn[i].setBounds((i%2)*27+2,(i/2)*30+2,25,25);
			pnButton.add(btn[i]);
		}
		pnStroke=new StrokePanel(6);
		pnStroke.setLocation(4,(btn.length/2)*30+30);
		pnStroke.setVisible(false);
		pnButton.add(pnStroke);

		pnSquare=new SquarePanel(BaseObject.RECTANGLE);
		pnSquare.setLocation(4,pnStroke.getLocation().y+pnStroke.getHeight()+10);
		pnSquare.setVisible(false);
		pnButton.add(pnSquare);
		
		paintModePanel=new PaintModePanel();
		paintModePanel.setLocation(4,pnStroke.getLocation().y);
		//paintModePanel.setVisible(false);
		pnButton.add(paintModePanel);
		
		welcomePanel=new WelcomePanel();
		welcomePanel.setLocation(pnStroke.getLocation());
		welcomePanel.setVisible(false);
		pnButton.add(welcomePanel);
		
		pnButton.setPreferredSize(new Dimension(58,(btn.length/2)*30+pnStroke.getHeight()+pnSquare.getHeight()+20));


		add(pnButton);
		Object[] objComponents=pnButton.getComponents();
		for (int i=0; i<objComponents.length; i++) {
			if (objComponents[i] instanceof JToggleButton) {
				JToggleButton btn=((JToggleButton)objComponents[i]);
				btn.setFocusable(false);
				btn.addActionListener(this);
			}
		}
		setToggleButton(0);
	}
	

	public void actionPerformed(ActionEvent e) {
		String s=e.getActionCommand();
		
		if ("OpenFile".equals(s)) {
			instance.openFile(null);
		}
		else if ("SaveAsFile".equals(s)) {
			instance.saveFile(true);
		}
		else if ("SaveFile".equals(s)) {
			instance.saveFile(false);
		}
		else if ("NewFile".equals(s)) {
			instance.initParam();
			instance.fileName=null;
		}
		else if("Export".equals(s)){
			instance.saveFile2(instance.c);
		}
		else if ("Exit".equals(s)) {
			System.exit(0);
		}
		else if ("AboutMe".equals(s)) {
			JOptionPane.showMessageDialog(null," Copyright(c) 2008","关于 "+Project.TITLE,JOptionPane.INFORMATION_MESSAGE);
		}
		else if ("SetBackColor".equals(s)) {
			Color c=JColorChooser.showDialog(instance,"背景色",instance.backColor);
			if (c!=null) {
				instance.backColor=c;
				instance.c.setBackground(c);
				instance.repaint();
			}
		}
		else if ("SetStroke".equals(s)) {
			String input=JOptionPane.showInputDialog(instance,"输入粗细数值 (>0)",instance.stroke);
			if (input==null) return;
			float stroke=1.0f;
			try {
				stroke=Float.parseFloat(input);
			}
			catch (Exception ee) {
				System.out.println (ee);
			}
			setStroke(stroke);
			pnStroke.setStroke(stroke);
		}
		else if ("SetCanvas".equals(s)) {
			String inputW=JOptionPane.showInputDialog(instance,"输入画布宽 (>0)",instance.width);
			if (inputW==null) return;
			String inputH=JOptionPane.showInputDialog(instance,"输入画布高 (>0)",instance.height);
			if (inputH==null) return;
			int width=instance.width;
			int height=instance.height;
			try {
				width=Integer.parseInt(inputW);
				height=Integer.parseInt(inputH);
			}
			catch (Exception ee) {
				System.out.println (ee);
			}
			instance.width=width;
			instance.height=height;
			instance.c.setSize(width,height);
			instance.repaint();
		}
		else if ("Undo".equals(s)) {
			if (instance.undoGraphics.size()==0) return;
			instance.graphics.add(instance.undoGraphics.getLast());
			instance.undoGraphics.removeLast();
			if (instance.undoGraphics.size()==0) {
				instance.setUndoable(false);
			}
			instance.repaint();
		}
		else if ("DelObject".equals(s)) {
			deleteObject();
		}
		else if("Clone".equals(s)){
			try {
				cloneObject();
			//	cloneObject();
			} catch (CloneNotSupportedException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
		}
		
		else {
			//改变按钮选择 state
			instance.isFilling=false;
			if ("move".equals(s)) {
				instance.setType(-1);
				setToggleButton(0);
			}
			else if ("pencil".equals(s)) {
				instance.setType(BaseObject.PENCIL);
				setToggleButton(1);
			}
			else if ("colorfill".equals(s))
			{
				instance.setType(BaseObject.FILL);
				instance.isFilling=true;
				setToggleButton(2);
			}
			else if("erase".equals(s))
			{
				instance.setType(BaseObject.ERASE);
				setToggleButton(3);
			}
			else if("rotate".equals(s))
			{
				instance.setType(BaseObject.ROTATE);
				instance.isRotating=true;
				setToggleButton(4);
			}
			else if ("line".equals(s)) {
				instance.setType(BaseObject.LINE);
				setToggleButton(5);
			}
			else if ("rect".equals(s)) {
				instance.isFill=false;
				instance.setType(BaseObject.RECTANGLE);
				setToggleButton(6);
			}
			else if ("roundrect".equals(s)) {
				instance.isFill=false;
				instance.setType(BaseObject.ROUNDRECT);
				setToggleButton(7);
			}
			else if ("oval".equals(s)) {
				instance.isFill=false;
				instance.setType(BaseObject.OVAL);
				setToggleButton(8);
			}
		}
	}
	/**
     * 删除当前选中物体
     */
	public void deleteObject() {
		if (instance.nowObject>=0) {
			instance.undoGraphics.add(instance.graphics.remove(instance.nowObject));
			instance.setUndoable(true);
			instance.instance.setState("已删除物体 "+String.valueOf(instance.nowObject)+" !");
			instance.nowObject=-1;
			instance.nowGraphics=-1;
			instance.redraw();
			instance.setDelable(false);
		}
	}
	
	public void cloneObject() throws CloneNotSupportedException {
		if(instance.nowObject>=0){
			BaseObject t;
			if (instance.graphics.get(instance.nowObject).type==BaseObject.LINE) {
				//t=new ObjLine();
				t=(ObjLine)instance.graphics.get(instance.nowObject).clone();
			}
			else if (instance.graphics.get(instance.nowObject).type==BaseObject.RECTANGLE) {
				//t=new ObjRectangle();
				t=(ObjRectangle)instance.graphics.get(instance.nowObject).clone();
			}
			else if (instance.graphics.get(instance.nowObject).type==BaseObject.ROUNDRECT) {
				//t=new ObjRoundRect();
				t=(ObjRoundRect)instance.graphics.get(instance.nowObject).clone();
			}
			else if (instance.graphics.get(instance.nowObject).type==BaseObject.OVAL) {
				//t=new ObjOval();
				t=(ObjOval)instance.graphics.get(instance.nowObject).clone();
			}
			else if (instance.graphics.get(instance.nowObject).type==BaseObject.PENCIL) {
				//t=new ObjPolyline();
				t=(ObjPolyline)instance.graphics.get(instance.nowObject).clone();
			}
			else { //if (nowType==G2d.POLYGON) {
				//t=new ObjPolygon();
				t=(ObjPolygon)instance.graphics.get(instance.nowObject).clone();
			}			
			instance.graphics.add(t);
		}
	}
	/**
     * 设置画笔粗细
     * @param f 画笔粗细
     */
	public void setStroke(float f) {
		instance.stroke=f;
	}
	/**
     * 设置是否绘制正二维图形
     * @param square 是否绘制正二维图形
     */
	public void setSquare(boolean square) {
		instance.isSquare=square;
	}
	/**
     * 设置渐变填充样式
     * @param type 渐变样式,0-不渐变,1-水平渐变,2-垂直渐变,3-对角渐变
     * @see BaseObject#gradientPaint
     * @see BaseObject#setGradientPaint(Point,Point)
     */
	public void setPaintMode(int type) {
		instance.gradientPaint=type;
	}
	private void setToggleButton(int index) {
		for (int i=0; i<btn.length; i++)
			btn[i].setSelected(false);
		btn[index].setSelected(true);
		String s=sCmds[index];
		welcomePanel.setVisible(false);

⌨️ 快捷键说明

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