import java.awt.*; import java.awt.event.*; public class ComponentScrollerApplet extends java.applet.Applet { public void init() { Image image = getImage( getDocumentBase(), getParameter("image") ); ImageComponent canvas = new ImageComponent( image ); setLayout( new BorderLayout() ); add( "Center", new ComponentScroller(canvas) ); } } class ComponentScroller extends Container { Scrollbar horizontal, vertical; Panel scrollarea = new Panel(); Component component; int orgX, orgY; ComponentScroller( Component comp ) { scrollarea.setLayout( null ); // We'll handle the layout scrollarea.add( component = comp ); horizontal = new Scrollbar( Scrollbar.HORIZONTAL ); horizontal.setMaximum( component.getSize().width ); horizontal.addAdjustmentListener( new AdjustmentListener() { public void adjustmentValueChanged(AdjustmentEvent e) { component.setLocation( orgX = -e.getValue(), orgY ); } } ); vertical = new Scrollbar( Scrollbar.VERTICAL ); vertical.setMaximum( component.getSize().height); vertical.addAdjustmentListener( new AdjustmentListener() { public void adjustmentValueChanged(AdjustmentEvent e) { component.setLocation( orgX, orgY = -e.getValue() ); } } ); setLayout( new BorderLayout() ); add( "Center", scrollarea ); add( "South", horizontal ); add( "East", vertical ); } public void doLayout() { super.doLayout(); horizontal.setVisibleAmount( scrollarea.getSize().width ); vertical.setVisibleAmount( scrollarea.getSize().height ); } }