java加密解密示例分享

时间:2021-12-31 14:56:50

(1)先定义要实现的类,我先定义了一个抽象类
 

复制代码代码如下:

//图形类  
abstract class  Shape{  
     int x,y;  
     int x1,y1;  
    Color color ;  
    Graphics g ;  
    byte type ;  
    public abstract void draw(Graphics g) ;  

}  
//直线类  
 class LineShape extends Shape{  

    public LineShape(int x, int y ,int x1,int y1,Color color){  
        this.x = x ;  
        this.y = y ;  
        this.x1 = x1 ;  
        this.y1 = y1 ;  
        this.color = color ;  
        this.type = 0;  
    }  

    @Override  
    public void draw(Graphics g) {  
        g.setColor(color) ;  
        g.drawLine(x, y, x1, y1) ;  

    }  

 }  
//圆类  
class OvalShape extends Shape{  

  public OvalShape(int x,int y, int x1,int y1,Color color){  
        this.x = x ;  
        this.y = y ;  
        this.x1 = x1 ;  
        this.y1 = y1 ;  
        this.color = color ;  
        this.type = 1;  
     }  
    @Override  
    public void draw(Graphics g) {  

        g.setColor(color) ;  
        g.drawOval((x+x1)/2,(y+y1)/2,(x1-x)/2 ,(y1-y)/2 );  
    }  

 }  
//图片类  
 class picture extends Shape{  
     int a ;  
     int b ;  
     int cl[][] ;  
     public picture(int a,int b,int cl[][]){  
         this.type =2 ;  
         this.a =a ;  
         this.b =b ;  
         this.cl =cl ;  

     }  
     public void draw(Graphics g){  
         for(int k=0;k<a;k++){  
              for(int j=0;j<b;j++){  

                Color c   =  new Color(cl[k][j]) ;  
                g.setColor(c);  
                g.drawLine(k+100,j+100,k+100,j+100);  
              }  
          }   
     }  
 }  

 

 

(2)总方法类
 

复制代码代码如下:

public class BmpSaveStart {  

    Graphics g ;  
    public static void main(String[] args) {  
         new BmpSaveStart() .UI();  

    }  
    public void UI(){  
        JFrame jf = new JFrame();  
        jf.setSize(600,600);  

        jf.setTitle("图片的存储");  
        jf.setBackground(Color.WHITE );  
        JMenuBar bar = new JMenuBar() ;  
        JMenu menu1 = new JMenu("选项") ;  
        JMenuItem m1 = new JMenuItem("画圆");  
        JMenuItem m2 = new JMenuItem("画线");  
        JMenuItem m3 = new JMenuItem("存储");  
        JMenuItem m4 = new JMenuItem("打开");  
        JMenuItem m5 = new JMenuItem("图片");  
        menu1.add(m1) ;  
        menu1.add(m2) ;  
        menu1.add(m3) ;  
        menu1.add(m4) ;  
        menu1.add(m5) ;  
        bar.add(menu1);  
        jf.setJMenuBar(bar);  

        jf.setDefaultCloseOperation(3);  
        jf.setVisible(true) ;  
        PaintDemo p =   new PaintDemo(g,jf) ;  

        m1.setActionCommand("画圆");  
        m2.setActionCommand("画线");  
        m3.setActionCommand("存储");  
        m4.setActionCommand("打开");  
        m5.setActionCommand("图片") ;  

        m1.addActionListener(p);  
        m2.addActionListener(p);  
        m3.addActionListener(p);  
        m4.addActionListener(p);  
        m5.addActionListener(p);  
    }  
}  

 

 (3)监听类

复制代码代码如下:

class PaintDemo implements MouseListener,ActionListener{  
ImageIcon img = new ImageIcon("Images/100.gif");  
BufferedImage bufImage = new BufferedImage(img.getIconWidth(),img.getIconHeight(),BufferedImage.TYPE_INT_RGB);  

 int x,y;  
 int x1,y1;  
 JFrame jf ;  
 Graphics g ;  
 String str ;  
 Color c ;  
 int cr ;  
 int cl[][] = new int[1000][1000] ;  

  
ArrayList<Shape> shapes = new ArrayList<Shape>() ;  
 Random random =new Random() ;  
 int R ;  
 int G ;  
 int B ;  
 public PaintDemo( Graphics g ,JFrame jf){  
     this.jf = jf;  
     this.g = jf.getGraphics();  
 }  
    @Override  
    public void mouseClicked(MouseEvent e) {  
        // TODO Auto-generated method stub  

    }  

    @Override  
    public void mousePressed(MouseEvent e) {  
           x=e.getX();  
           y=e.getY();  

          
    }  

    @Override  
    public void mouseReleased(MouseEvent e) {  
          x1 = e.getX();  
          y1 = e.getY();  
          setColor() ;  
          if(str.equals("画圆")){  
             // paintOval();  

                Shape shape = new OvalShape(x, y, x1, y1,c) ;  
                shape.draw(g);  
                shapes.add(shape) ;  
            }  
            if(str.equals("画线")){  
                //paintLine();  

                Shape shape = new LineShape(x, y, x1, y1,c) ;  
                shape.draw(g);  
                shapes.add(shape) ;  
                /*File  f =new File("D:\\test.txt") ; 
                if(f==null){ 
                    try { 
                        f.createNewFile(); 
                    } catch (Exception e1) { 
                        // TODO Auto-generated catch block 
                        e1.printStackTrace(); 
                    } 
                }*/  
            }  

                  

            }  
public void saveFile(String path,ArrayList<Shape> shapes){  
    try{  
        //文件输出流  
        FileOutputStream fos = new FileOutputStream(path) ;  
        //将文件输出流包装成可写基本类型的流  
        DataOutputStream dos = new DataOutputStream(fos) ;  
        dos.writeInt(shapes.size());//写入队列中图形的个数  
        //读取队列  
        for(int i=0;i<shapes.size();i++){  
            //取出一种形状  
            Shape shape = shapes.get(i);  
            byte type = shape.type ;  

              
            if(type==0){//根据type判断类型,如果是直线  
                System.out.println("开始存储直线") ;  
                dos.writeByte(type);  
                LineShape line = (LineShape) shape ;//强制转换为直线类  
                //写直线形状的数据;  
                int x = line.x ;  
                int y = line.y ;  
                int x1 = line.x1 ;  
                int y1 = line.y1 ;  
                Color color = line.color ;  
                cr = color.getRGB();  
                dos.writeInt(x);  
                dos.writeInt(y);  
                dos.writeInt(x1);  
                dos.writeInt(y1);  
                dos.writeInt(cr);  
            }else if(type == 1){  
                dos.writeByte(type);  
                System.out.println("开始存储圆") ;  
                OvalShape oval = (OvalShape) shape ;//强制转换为圆类  
                //写直线形状的数据;  
                int x = oval.x ;  
                int y = oval.y ;  
                int x1 = oval.x1 ;  
                int y1 = oval.y1 ;  
                Color color = oval.color ;  
                cr = color.getRGB() ;  
                dos.writeInt(x);  
                dos.writeInt(y);  
                dos.writeInt(x1);  
                dos.writeInt(y1);  
                dos.writeInt(cr);  
            }else if(type ==2){  

                dos.writeByte(type) ;  
                picture pl = (picture) shape ;  
                System.out.println("开始存储图片") ;  
                int width = pl.a ;  
                int height = pl.b ;  
                dos.writeInt(width) ;  
                dos.writeInt(height) ;  
                for(int k=0;k<width;k++){  
                    for(int j=0;j<height;j++){  
                        int t = pl.cl[k][j];  
                        dos.writeInt(t) ;  
                    }  
                }  

            }  
            }  
        dos.flush() ;  
        fos.close();  
    }catch(Exception e){  
        e.printStackTrace();  
    }  
}  
public ArrayList<Shape> readFile(String path){  

    try{  
        //创建文件对象的输入流  
        FileInputStream fis = new FileInputStream(path);  
        //将文件输入流包装成可读基本类型的流  
        DataInputStream dis = new DataInputStream(fis);  
        //先读取文件长度,即总共的形状个数  
        int len = dis.readInt() ;  
        for(int i=0 ;i<len;i++){  
            byte  type = dis.readByte();  
            if(type==0){  
            int a=  dis.readInt();  
            int b=  dis.readInt();  
            int c=  dis.readInt();  
            int d=  dis.readInt();  
            Color f= new Color(dis.readInt());  
            LineShape line = new LineShape(a,b,c,d,f);  
            //读取直线的设置  

            //将直线存入队列  
            shapes.add(line) ;  
            }else if(type == 1){  

                int a=  dis.readInt();  
                int b=  dis.readInt();  
                int c=  dis.readInt();  
                int d=  dis.readInt();  
                Color f= new Color(dis.readInt());  
                System.out.println("开始读取圆") ;  
                OvalShape oval = new OvalShape(a,b,c,d,f);  
                shapes.add(oval) ;  
              }else if(type == 2){  

                int   a=    dis.readInt();  
                int    b=   dis.readInt();  

                  for(int k=0;k<a;k++){  
                      for(int j=0;j<b;j++){  

                     cl[k] [j] = dis.readInt();  

                      }  
                  }  
                  picture   pic = new picture(a,b,cl) ;  
                  shapes.add(pic) ;  
              }  

                
    }}catch(Exception e){  
        e.printStackTrace();  
    }  
    return shapes ;  
}  
    @Override  
    public void mouseEntered(MouseEvent e) {  
        // TODO Auto-generated method stub  

    }  

    @Override  
    public void mouseExited(MouseEvent e) {  
        // TODO Auto-generated method stub  

    }  
    public void setColor(){  
          R =random.nextInt(255);  
          G =random.nextInt(255);  
          B =random.nextInt(255);  
          c=new Color(R,G,B) ;  
    }  
   /* public void paintLine(){ 
        setColor(); 
          g.drawLine(x, y, x1, y1) ; 
    } 
    public void paintOval(){ 
        setColor(); 
        g.drawOval((x+x1)/2,(y+y1)/2,(x1-x)/2 ,(y1-y)/2 ); 
    } 
    */  
    @Override  
    public void actionPerformed(ActionEvent e) {  
        str = e.getActionCommand() ;  
        jf.addMouseListener(this);  
        if(str.equals("存储")){  

            saveFile("D:\\test.txt",shapes) ;  

        }  
        if(str.equals("打开")){  

            readFile("D:\\test.txt") ;  
            for(int i=0;i<shapes.size();i++){  

                Shape shape = shapes.get(i);  
                if(shape.type ==0){  
                    System.out.println("确定是圆类型");  
                    LineShape line = (LineShape)shape ;  
                    line.draw(g);  
                }else if(shape.type==1){  
                    System.out.println("确定是圆类型");  
                    OvalShape  oval = (OvalShape)shape ;  
                    oval.draw(g);  
                }else if(shape.type ==2){  
                    System.out.println("确定是图片类型");  
                    picture pl = (picture)shape ;  
                    pl.draw(g) ;  

                }  

                  
            }  
        }  
        if(str.equals("图片")){  

        Thread th = new Thread(new Runnable(){  

            public void run(){  
                while(true){  
                    try{  
                        Thread.sleep(30) ;  

               Graphics g1 = bufImage.getGraphics();  

               g1.drawImage(img.getImage(), 0,0,null);  
             jf.getGraphics().drawImage(bufImage,100,100,null) ;  
              int width = bufImage.getWidth();  
               int height = bufImage.getHeight() ;  
           for(int k=0;k<width;k++){  
                for(int j=0;j<height;j++){  
                    int p =bufImage.getRGB(k,j) ;  
                    cl[k][j] = p ;  
                         }  
                          }  
              picture pe =new picture(width,height,cl);  
              shapes.add(pe);  

                  
                       }catch(Exception e){  
                        e.printStackTrace();  
                         }  
            }  
        }});  
        th.start();  
        }          
    }  
}