手机
当前位置:查字典教程网 >编程开发 >Java >java加密解密示例分享
java加密解密示例分享
摘要:(1)先定义要实现的类,我先定义了一个抽象类复制代码代码如下://图形类abstractclassShape{intx,y;intx1,y1...

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

}

}

}

【java加密解密示例分享】相关文章:

Java 自定义错误类示例代码

Java排序实现的心得分享

java裁剪图片并保存的示例分享

java控制台输出数字金字塔示例分享

java使用回溯法求解数独示例

java使用des加密解密示例分享

java 图片加水印实例代码

java读取csv文件内容示例代码

java小数位的例子

java nio基础使用示例

精品推荐
分类导航