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

📄 b014b32c0937001d1a448cf68e6ef603

📁 java画图板
💻
字号:
package d;
import java.awt.event.*;
import java.awt.*;
import java.io.*;
import java.util.Vector;
import javax.swing.JColorChooser;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class drawbord extends Frame implements ActionListener,MouseMotionListener,MouseListener,Serializable
{
    private Button rec,lin,ov,bc,dk,qk,sz,gs,bz,tc,zh,fj,sc;
    private Label l1,l2,l3,l4;
    int flag=-1;
    shap sh;
    shap s;
    Point m=new Point();
    Point sbb=new Point();
    Point n=new Point();
    Point tsbb=new Point();
    Panel bord,bord1;
    Vector<shap> al=new Vector<shap>();
    Vector<shap> a=new Vector<shap>();
    FileInputStream picin = null;
    FileOutputStream picout = null;
    
    ObjectInputStream vin = null;
    ObjectOutputStream vout = null;
    FileDialog openpicture,savepicture;
    public drawbord(String s)
    {
    	super(s);
    	bord=new Panel();
    	bord1=new Panel();
    	l1=new Label("文件操作");
    	l2=new Label("画图选项");
    	l3=new Label("操作说明");
    	l4=new Label("工具栏");
    	rec=new Button("画矩形");
    	lin=new Button("画直线");
    	ov=new Button("画圆");
    	bc=new Button("保存图画");
    	dk=new Button("打开图画");
    	qk=new Button("清空");
    	sz=new Button("选中框");
    	zh=new Button("组合");
    	fj=new Button("分解");
    	gs=new Button("调色板");
    	bz=new Button("操作说明");
    	tc=new Button("退出");
    	sc=new Button("删除");
    	bord.add(l1);
    	bord.add(dk);
    	bord.add(bc);
    	bord.add(l2);
    	bord.add(rec);
    	bord.add(ov);
    	bord.add(lin);
    	bord.add(l3);
    	bord.add(bz);
    	bord.add(tc);
    	bord1.add(l4);
    	bord1.add(sz);
    	bord1.add(zh);
    	bord1.add(fj);
    	bord1.add(gs);
    	bord1.add(sc);
    	bord1.add(qk);
    	this.add(bord,BorderLayout.NORTH);
    	this.add(bord1,BorderLayout.SOUTH);
    	rec.addActionListener(this);
    	lin.addActionListener(this);
    	ov.addActionListener(this);
    	qk.addActionListener(this);
    	dk.addActionListener(this);
    	bc.addActionListener(this);
    	sz.addActionListener(this);
    	gs.addActionListener(this);
    	bz.addActionListener(this);
    	tc.addActionListener(this);
    	zh.addActionListener(this);
    	fj.addActionListener(this);
    	sc.addActionListener(this);
    	addMouseListener(this);
    	addMouseMotionListener(this);
    	
    	 openpicture = new FileDialog(this,"打开图画",FileDialog.LOAD);
    	  openpicture.setVisible(false);
    	  savepicture = new FileDialog(this,"保存图画",FileDialog.SAVE);
    	  savepicture.setVisible(false);

    	  openpicture.addWindowListener(new WindowAdapter()
    	  {
    	   public void windowClosing(WindowEvent e)
    	   { openpicture.setVisible(false); }
    	  });

    	  savepicture.addWindowListener(new WindowAdapter()
    	  {
    	   public void windowClosing(WindowEvent e)
    	   { savepicture.setVisible(false); }
    	  });
    	this.addWindowListener(new WindowAdapter()
    	  {
    	    public void windowClosing(WindowEvent e)
    	   {  System.exit(0);
    	    }
    	  });
        this.validate();
        this.setSize(900,600);
    	this.setLocation(60, 60);
    	this.setVisible(true);   	
    }
    
    public void paint(Graphics g){
    	if(flag==0)
    	 {
    		g.clearRect(0,0,this.getSize().width,this.getSize().height);//清除
    		al.removeAllElements();
    	 }
        if(flag==4){
        	for(int i=0;i<a.size();i++)
      		    a.get(i).draw(g);
           }
    	   
    	for(int j=0;j<al.size();j++)
      		    al.get(j).draw(g);
    	  
    }

	@SuppressWarnings("unchecked")
	public void actionPerformed(ActionEvent e) {
		if(e.getSource()==sc)
		{
			for(int i=0;i<al.size();i++)
			{
				if(al.get(i).isseclect(0))
					{
					al.removeElementAt(i);
					i--;
					}
				
			}
			this.repaint();
			flag=4;
		}
		if(e.getSource()==zh)
		{
			zhushap zs=new zhushap();
			shap zh;
			for(int i=0;i<al.size();i++)
			{     
				if(al.get(i).isseclect(0))
					{
						zh=al.remove(i);
						i--;
						zs.addshap(zh);
					}
			}
			if(zs.getsize()!=0){
				al.add(zs);
				this.repaint();
			}
		}
		if(e.getSource()==fj)
		{
			shap sa;
			zhushap zhp=new zhushap();
			//int hyp=al.size();
			for(int i=0;i<al.size();i++)
			{
				sa=al.get(i);
				if(sa.isseclect(0))
				{
					if(sa instanceof zhushap)
					{
						zhp=(zhushap) al.remove(i);
						int p=zhp.getsize();
						for(int j=0;j<p;j++)
						{	
							al.add(zhp.remove(0));
							
						}
						i--;
					}
				}
			}
			this.repaint();
		}
		if(e.getSource()==tc)
		{
			 System.exit(0);
		}
		if(e.getSource()==bz)
		{
			JOptionPane.showMessageDialog(null,
					"1.如何画图:" +
					"\n" +
					"        点击所要画的图形的按钮后,用鼠标在面板上" +
					"\n"+
					"拖动即可画出图形,可连续画出多个图形,只有画" +
					"\n" +
					"图时鼠标是十字形的。"+
		     		"\n"+
					"2.如何选中:" +
					"\n" +
					"        单击“选中”按钮后,在面板上拖动鼠标画出" +
					"\n"+
					"一个矩形框来选中你所要选中的图形,只有图形完" +
					"\n"+
					"全被矩形框包围住才算选中。选中释放鼠标后图形" +
					"\n"+
					"线条会加粗,此时你可以任意拖动图形,也可以改" +
					"\n"+
					"变图形的颜色或是删除选中的图形。操作完毕后单"+
					"\n"+
					"击面板,图形线条变细,此时才可以再次执行其他"+
					"\n"+
					"操作。"+
					"\n"+
					"3.组合与分解"+
					"\n"+
					"        选中多个图形后,点击组合按钮,此时这几个"+
					"\n"+
					"图形就是一个整体,以后只有把这个整体全部选中"+
					"\n"+
					"才算选中。若要撤销组合,先选中图形组合,再点"+
					"\n"+
					"击分解按钮即可。"
					,"操作说明", JOptionPane.INFORMATION_MESSAGE); 

		}
		if(e.getSource()==rec){
			flag=1;
		}
		if(e.getSource()==lin){
			flag=2;
		}
		if(e.getSource()==ov){
			flag=3;
		}
		if(e.getSource()==qk){
			flag=0;
			repaint();
		}
		if(e.getSource()==sz){
			flag=4;
		}
		if(e.getSource()==gs){
			flag=-1;
			Color newcolor = JColorChooser.showDialog(this,"调色板",Color.BLACK);
			if(newcolor==null)
				{
				  newcolor=Color.BLACK;
			    }
			else{  for(int hy=0;hy<al.size();hy++)
				{
				   if(al.get(hy).isseclect(0))
				     {
					   al.get(hy).ischangcolor(0);
				       al.get(hy).getshapecolor(newcolor);
				     }
				}
			  this.repaint();
			  for(int hy1=0;hy1<al.size();hy1++)
				{
				   if(al.get(hy1).isseclect(0))
				    al.get(hy1).ischangcolor(1);
				}
			  for(int hy2=0;hy2<al.size();hy2++)
				{
				   if(al.get(hy2).isseclect(0))
				      al.get(hy2).isseclect(1);
				}
			  }
			flag=4;
		}
		if(e.getSource()==dk){		   
			   openpicture.setVisible(true);   			   
			   if(openpicture.getFile()!=null)
			   { 
			    int tempflag;
			    tempflag = flag;
			    flag = 0 ;
			    repaint();
			    try{ 
			      al.removeAllElements();
			      File filein = new File(openpicture.getDirectory(),openpicture.getFile());
			      picin = new FileInputStream(filein);
			      vin = new ObjectInputStream(picin);
				  Vector<shap> readObject = (Vector<shap>) vin.readObject();
				   al = readObject;
			       vin.close();
			      flag = -1;
			      repaint();
			     }

			    catch(ClassNotFoundException ioe2)
			    {
			      repaint();
			      flag = tempflag;
			      JOptionPane.showMessageDialog(null, "不能读的对象!!");
			    }
			    catch(IOException ioe) 
			    {
			     repaint();
			     flag = tempflag;
			     JOptionPane.showMessageDialog(null, "不能读的文件!!");
			    }
			   }
		}
		if(e.getSource()==bc){
			   savepicture.setVisible(true);
			   try{
			     File fileout = new File(savepicture.getDirectory(),savepicture.getFile());
			     picout = new FileOutputStream(fileout);
			     vout = new ObjectOutputStream(picout);
			     vout.writeObject(al);
			     vout.close();
			    }
			   catch(IOException ioe) 
			    {
			      JOptionPane.showMessageDialog(null, "不能读的对象!!");
			    }			   
		}
	}

	public void mouseDragged(MouseEvent e) {
		if(flag!=-1&&flag!=4&&flag!=5&&flag!=6)
		{ 
			sh.setPe(e.getPoint());
		    this.repaint();
		}
		if(flag==4){
			s.setPe(e.getPoint());
		    this.repaint();
		}
		if(flag==6){
			for(int k=0;k<al.size();k++)
			{ 
				if(al.get(k).isseclect(0))
					{ 
		             al.get(k).xzmove(e.getPoint().x-tsbb.x,e.getPoint().y-tsbb.y);}
			        }
			this.repaint();
		}
	}

	public void mousePressed(MouseEvent e) {
		  switch(flag){
			case 1: this.setCursor(Frame.CROSSHAIR_CURSOR);
				    sh=new shaprec(e.getPoint(),e.getPoint());
					sh.setPe(e.getPoint());
					al.add(sh);
				    m=e.getPoint();
		            break;
		    case 2: this.setCursor(Frame.CROSSHAIR_CURSOR);
		    	    sh=new shapline(e.getPoint(),e.getPoint());
		            sh.setPe(e.getPoint());
		            al.add(sh);
		            m=e.getPoint();
	        		break;
		    case 3:this.setCursor(Frame.CROSSHAIR_CURSOR);
		    	   sh=new shapoval(e.getPoint(),e.getPoint());
		           sh.setPe(e.getPoint());
                   al.add(sh);
                   m=e.getPoint();
                   break;
		    case 4: s=new shaprec(e.getPoint(),e.getPoint());
		           s.setPe(e.getPoint());
		           a.add(s);
		           this.sbb=e.getPoint();
		           break;
		    case 6:this.tsbb=e.getPoint();
		           break;
		    default :
				}	
		    
	}
	
	public void mouseReleased(MouseEvent e) {	
		if(flag!=-1&&flag!=4&&flag!=5&&flag!=6)
		 {  this.setCursor(Frame.DEFAULT_CURSOR);
			n=e.getPoint();
		    int len=al.size();
		    al.get(len-1).setPe(e.getPoint());
		    al.get(len-1).baocunp(0,m,n,0,0);
		    this.repaint();
		    
		  }
		if(flag==4){
			a.removeAllElements();
			flag=5;
			for(int js=0;js<al.size();js++)
			   {
				al.get(js).getmou(this.sbb,e.getPoint());
				al.get(js).isseclect(0);
			   }			   
			this.repaint();
			int jj=0;
			for(int jk=0;jk<al.size();jk++)
			{
				if(al.get(jk).isseclect(0))
					jj++;
			}
			if(jj==0)
				flag=4;
			else 
				flag=6;
			return;
		    }
		if(flag==6){
			for(int k=0;k<al.size();k++)
			 {  
				Point m1=new Point();
				Point n1=new Point();
				if(al.get(k).isseclect(0))
		         {
					al.get(k).xzmove(e.getPoint().x-tsbb.x,e.getPoint().y-tsbb.y);
					al.get(k).baocunp(1,m1, n1,e.getPoint().x-tsbb.x,e.getPoint().y-tsbb.y);
				 }
			 }
			flag=-1;
			this.repaint();			
		    }
		
		}
	public void mouseMoved(MouseEvent e) {			
	}
	public void mouseClicked(MouseEvent e) {
		for(int jg=0;jg<al.size();jg++)
		 {
           if(al.get(jg).isseclect(0))
           {
              al.get(jg).isseclect(1);   
           }
 		 }
		  this.repaint();
		  flag=4;
	}
	public void mouseEntered(MouseEvent e) {				
	}
	public void mouseExited(MouseEvent e) {				
	}		
}
	

⌨️ 快捷键说明

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