java加密解密示例分享。本站提示廣大學習愛好者:(java加密解密示例分享)文章只能為提供參考,不一定能成為您想要的結果。以下是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();
}
}
}