当前位置: 代码迷 >> Java相关 >> 关于java applet 图片处理的有关问题,请高手帮下忙
  详细解决方案

关于java applet 图片处理的有关问题,请高手帮下忙

热度:3267   发布时间:2013-02-25 21:49:18.0
关于java applet 图片处理的问题,请高手帮下忙!
程序运行报 java.io.StreamCorruptedException: invalid stream header: FFD8FFE0 错误!
运行welcome.java报错,请问怎么处理呢?
程序代码:
Java code
import java.awt.BasicStroke;import java.awt.BorderLayout;import java.awt.Button;import java.awt.Choice;import java.awt.Color;import java.awt.FileDialog;import java.awt.Frame;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.Label;import java.awt.Panel;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.ItemEvent;import java.awt.event.ItemListener;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import java.awt.event.MouseMotionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.awt.geom.Ellipse2D;import java.awt.geom.Line2D;import java.awt.geom.Rectangle2D;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.util.Vector;import javax.swing.JColorChooser;public class paintboard extends Frame implements ActionListener,MouseMotionListener,MouseListener,ItemListener{ int x = -1, y = -1; int con = 1;//画笔大小 int Econ = 5;//橡皮大小 int toolFlag = 0;//toolFlag:工具标记 Color c = new Color(0,0,0); //画笔颜色 BasicStroke size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);//画笔粗细 Point cutflag = new Point(-1, -1, c, 6, con);//截断标志 Vector paintInfo = null;//点信息向量组 int n = 1; FileInputStream picIn = null; FileOutputStream picOut = null; ObjectInputStream VIn = null; ObjectOutputStream VOut = null; Panel toolPanel; Button eraser, drLine,drCircle,drRect; Button clear ,pen; Choice ColChoice,SizeChoice,EraserChoice; Button colchooser; Label 颜色,大小B,大小E; Button openPic,savePic; FileDialog openPicture,savePicture;  paintboard(String s) {   super(s);  addMouseMotionListener(this);  addMouseListener(this);  paintInfo = new Vector();  ColChoice = new Choice();  ColChoice.add("black");  ColChoice.add("red");  ColChoice.add("blue");  ColChoice.add("green");  ColChoice.addItemListener(this);  SizeChoice = new Choice();  SizeChoice.add("1");  SizeChoice.add("3");    SizeChoice.add("5");  SizeChoice.add("7");  SizeChoice.add("9");  SizeChoice.addItemListener(this);  EraserChoice = new Choice();  EraserChoice.add("5");  EraserChoice.add("9");  EraserChoice.add("13");  EraserChoice.add("17");  EraserChoice.addItemListener(this);  toolPanel = new Panel();  clear = new Button("清除");  eraser = new Button("橡皮");  pen = new Button("画笔");  drLine = new Button("画直线");  drCircle = new Button("画圆形");  drRect = new Button("画矩形");  openPic = new Button("打开图画");  savePic = new Button("保存图画");  colchooser = new Button("显示调色板");  clear.addActionListener(this);  eraser.addActionListener(this);  pen.addActionListener(this);  drLine.addActionListener(this);  drCircle.addActionListener(this);  drRect.addActionListener(this);  openPic.addActionListener(this);  savePic.addActionListener(this);  colchooser.addActionListener(this);  颜色 = new Label("画笔颜色",Label.CENTER);  大小B = new Label("画笔大小",Label.CENTER);  大小E = new Label("橡皮大小",Label.CENTER);  //面板添加组件  toolPanel.add(openPic);  toolPanel.add(savePic);  toolPanel.add(pen);  toolPanel.add(drLine);  toolPanel.add(drCircle);  toolPanel.add(drRect);  toolPanel.add(颜色); toolPanel.add(ColChoice);   toolPanel.add(大小B); toolPanel.add(SizeChoice);  toolPanel.add(colchooser);  toolPanel.add(eraser);  toolPanel.add(大小E); toolPanel.add(EraserChoice);  toolPanel.add(clear);  add(toolPanel,BorderLayout.NORTH);  setBounds(60,60,900,600); setVisible(true);  validate();  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); }  });  addWindowListener(new WindowAdapter()  {   public void windowClosing(WindowEvent e)   { System.exit(0);}  });    } public void paint(Graphics g) {  Graphics2D g2d = (Graphics2D)g;  Point p1,p2;  n = paintInfo.size();    if(toolFlag==2)    g.clearRect(0,0,getSize().width,getSize().height);//清除  for(int i=0; i<n-1; i++)  {   p1 = (Point)paintInfo.elementAt(i);   p2 = (Point)paintInfo.elementAt(i+1);   size = new BasicStroke(p1.boarder,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);      g2d.setColor(p1.col);   g2d.setStroke(size);  if(p1.tool==p2.tool)   {   switch(p1.tool)   {    case 0://画笔      Line2D line1 = new Line2D.Double(p1.x, p1.y, p2.x, p2.y);      g2d.draw(line1);           break;    case 1://橡皮      g.clearRect(p1.x, p1.y, p1.boarder, p1.boarder);     break;    case 3://画直线      Line2D line2 = new Line2D.Double(p1.x, p1.y, p2.x, p2.y);      g2d.draw(line2);     break;    case 4://画圆       Ellipse2D ellipse = new Ellipse2D.Double(p1.x, p1.y, Math.abs(p2.x-p1.x) , Math.abs(p2.y-p1.y));       g2d.draw(ellipse);     break;    case 5://画矩形       Rectangle2D rect = new Rectangle2D.Double(p1.x, p1.y, Math.abs(p2.x-p1.x) , Math.abs(p2.y-p1.y));       g2d.draw(rect);     break;    case 6://截断,跳过      i=i+1;     break;    default :   }//end switch   }//end if  }//end for } public void itemStateChanged(ItemEvent e) {  if(e.getSource()==ColChoice)//预选颜色  {   String name = ColChoice.getSelectedItem();      if(name=="black")   { c = new Color(0,0,0); }   else if(name=="red")   { c = new Color(255,0,0); }   else if(name=="green")   { c = new Color(0,255,0); }   else if(name=="blue")   { c = new Color(0,0,255); }  }  else if(e.getSource()==SizeChoice)//画笔大小  {   String selected = SizeChoice.getSelectedItem();      if(selected=="1")   {     con = 1;     size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);   }   else if(selected=="3")   {     con = 3;     size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);   }   else if(selected=="5")   { con = 5;     size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);   }   else if(selected=="7")   { con = 7;     size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);   }   else if(selected=="9")   { con = 9;     size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);   }  }  else if(e.getSource()==EraserChoice)//橡皮大小  {   String Esize = EraserChoice.getSelectedItem();   if(Esize=="5")   {  Econ = 5*2; }   else if(Esize=="9")   {  Econ = 9*2; }   else if(Esize=="13")   {  Econ = 13*2; }   else if(Esize=="17")   {  Econ = 17*3; }  } } public void mouseDragged(MouseEvent e) {  Point p1 ;  switch(toolFlag){   case 0://画笔     x = (int)e.getX();      y = (int)e.getY();     p1 = new Point(x, y, c, toolFlag, con);     paintInfo.addElement(p1);     repaint();     break;   case 1://橡皮     x = (int)e.getX();      y = (int)e.getY();     p1 = new Point(x, y, null, toolFlag, Econ);     paintInfo.addElement(p1);     repaint();     break;   default :  } } public void mouseMoved(MouseEvent e) {} public void update(Graphics g) {  paint(g); } public void mousePressed(MouseEvent e)  {   Point p2;  switch(toolFlag){   case 3://直线     x = (int)e.getX();      y = (int)e.getY();     p2 = new Point(x, y, c, toolFlag, con);     paintInfo.addElement(p2);     break;   case 4: //圆     x = (int)e.getX();      y = (int)e.getY();     p2 = new Point(x, y, c, toolFlag, con);     paintInfo.addElement(p2);     break;   case 5: //矩形     x = (int)e.getX();      y = (int)e.getY();     p2 = new Point(x, y, c, toolFlag, con);     paintInfo.addElement(p2);     break;   default :  }  }
  相关解决方案