import javax.swing.*;
import java.awt.*;
import javax.imageio.*;
import java.io.*;
public class Show
 {
 public  static void main(String[] args)
     {
       MyFrame frame=new MyFrame();
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       frame.show();
     }
 }
class MyFrame extends JFrame
  {
   public MyFrame()
    {
     setBackground(Color.BLUE);
     setSize(1000,1000);
     setTitle("                        MyImage                             ");
     MyPanel panel=new MyPanel();
     Container con=getContentPane();
     con.add(panel);
    }
   }
class MyPanel extends JPanel
{
 public void paintComponent(Graphics g)
 {
   super.paintComponent(g);
   String filename="45.jpeg";
   Image image=ImageIO.read(new File(filename));
   g.drawImage(image,0,0,null);
 }
}
  请问这个代码有什么错误,是要捕获异常么?正确的代码是什么?

解决方案 »

  1.   

    要捕获,Image image=ImageIO.read(new File(filename));涉及到IO一般都要捕获异常
      

  2.   

    import javax.swing.*;
    import java.awt.*;
    import javax.imageio.*;
    import java.io.*;public class Show
     {
     public  static void main(String[] args)
         {
           MyFrame frame=new MyFrame();
           frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
           //frame.show();
           frame.setVisible(true);
         }
     }
    class MyFrame extends JFrame
      {
       public MyFrame()
        {
         setBackground(Color.BLUE);
         setSize(1000,1000);
         setTitle("                        MyImage                             ");
         MyPanel panel=new MyPanel();
         Container con=getContentPane();
         con.add(panel);
        }
       }
    class MyPanel extends JPanel
    {
     public void paintComponent(Graphics g)
     {
       super.paintComponent(g);
       String filename="45.jpeg";
       try{
       Image image=ImageIO.read(new File(filename));
       g.drawImage(image,0,0,null);
       }catch(IOException e){
       e.printStackTrace();
       }
     }
    }
      

  3.   

    1、也许你把后缀名高错了,会不会是jpg而不是jpeg?
    2、路径问题,先用绝对路径试试看