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

📄 007e44849c2e001d10a59aac3a8c1dab

📁 java画图板
💻
字号:
package d;
import java.awt.event.*;
import java.awt.*;
import java.io.*;
import java.util.Vector;

import javax.swing.JColorChooser;
import javax.swing.JOptionPane;
public class drawbord extends Frame implements ActionListener,MouseMotionListener,MouseListener,Serializable
{
    private Button rec,lin,ov,bc,dk,qk,sz,gs;
    int flag=-1;
    shap sh;
    shap s;
    Point m=new Point();
    Point sbb=new Point();
    Point sbe=new Point();
    Point tsbb=new Point();
    Point tsbe=new Point();
    Panel bord;
    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();
    	rec=new Button("画矩形");
    	lin=new Button("画直线");
    	ov=new Button("画圆");
    	bc=new Button("保存图画");
    	dk=new Button("打开图画");
    	qk=new Button("清空");
    	sz=new Button("选中");
    	gs=new Button("调色板");
    	bord.add(dk);
    	bord.add(bc);
    	bord.add(rec);
    	bord.add(ov);
    	bord.add(lin);
    	bord.add(qk);
    	bord.add(sz);
    	bord.add(gs);
    	this.add(bord,BorderLayout.NORTH);
    	rec.addActionListener(this);
    	lin.addActionListener(this);
    	ov.addActionListener(this);
    	qk.addActionListener(this);
    	dk.addActionListener(this);
    	bc.addActionListener(this);
    	sz.addActionListener(this);
    	gs.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()==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,"调色板",c);
			if(newcolor==null)
				{
				  newcolor=Color.BLACK;
			    }
			  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);
				}
		}
		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){
			this.tsbe=e.getPoint();
			for(int k=0;k<al.size();k++)
			{ 
				if(al.get(k).isseclect(0))
		           al.get(k).xzmove(tsbe.x-tsbb.x,tsbe.y-tsbb.y);
			}
			this.repaint();
		}
	}

	public void mousePressed(MouseEvent e) {
		  m=e.getPoint();
		  switch(flag){
			case 1: sh=new shaprec(e.getPoint(),e.getPoint());
					sh.setPe(e.getPoint());
					al.add(sh);
		            break;
		    case 2: sh=new shapline(e.getPoint(),e.getPoint());
		            sh.setPe(e.getPoint());
		            al.add(sh);
	        		break;
		    case 3:sh=new shapoval(e.getPoint(),e.getPoint());
		           sh.setPe(e.getPoint());
                   al.add(sh);
                   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)
		 {
		    int len=al.size();
		    al.get(len-1).setPe(e.getPoint());
		    al.get(len-1).baocunp(m, e.getPoint());
		    this.repaint();
		  }
		if(flag==4){
			a.removeAllElements();
			flag=5;
			this.sbe=e.getPoint();
			for(int js=0;js<al.size();js++)
			   {
				al.get(js).getmou(this.sbb, this.sbe);
				al.get(js).isseclect(0);
			   }
			   
			this.repaint();
			flag=6;
			return;
		    }
		if(flag==6){
			this.tsbe=e.getPoint();
			for(int k=0;k<al.size();k++)
			 { 
				if(al.get(k).isseclect(0))
		         {
					al.get(k).xzmove(tsbe.x-tsbb.x,tsbe.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();
	}
	public void mouseEntered(MouseEvent e) {				
	}
	public void mouseExited(MouseEvent e) {				
	}		
}
	

⌨️ 快捷键说明

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