import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.*;
import java.awt.image.*;
import javax.swing.*;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Frame1 extends JFrame {
    JPanel contentPane;
    BorderLayout borderLayout1 = new BorderLayout();
    public JScrollPane JSP ; 
    public Image im;
    public imagecanvas imcan ;

    public Frame1() {
        try {
            setDefaultCloseOperation(EXIT_ON_CLOSE);
            jbInit();
        } catch (Exception exception) {
            exception.printStackTrace();
        }
    }

   
    private void jbInit() throws Exception {
        contentPane = (JPanel) getContentPane();
        contentPane.setLayout(borderLayout1);
        setSize(new Dimension(400, 300));
        setTitle("测试窗口");
        setResizable(false);
        String f = "bld.JPEG";
        String d = "D:/java/study/scrollerimage/test/src/test/";
        Toolkit tk=Toolkit.getDefaultToolkit();
        MediaTracker trac=new MediaTracker(this);
        im=tk.getImage(d+f); 
        if(im==null)
        {
         JOptionPane in = new JOptionPane("image is null");
         in.setVisible(true) ;
        }
        trac.addImage(im,0);
        try
          {
           trac.waitForAll();
          }
        catch(InterruptedException e)
          {e.printStackTrace();} 
        imcan=new imagecanvas(im);
        JSP = new JScrollPane(imcan,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
        contentPane.add(JSP,borderLayout1.CENTER);
         validate();
         setVisible(true);
    }
public static void main(String args[])
        {
          Frame1 dip=new Frame1(); 
          dip.setLocation(150,150);
          dip.setVisible(true);
        }//end of main()
}

class imagecanvas extends Canvas{
   public Image image;
   public imagecanvas(Image i)
           {
            image = i;
           }
  public void paint(Graphics g)
           {
            g.drawImage(image,0,31,this) ;
           }
  public void update(Graphics g)
           {
            paint(g);
           }
}