H5W3
当前位置:H5W3 > 其他技术问题 > 正文

java加密解密示例分享

(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();          }              }  } 

本文地址:H5W3 » java加密解密示例分享

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址