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 );
}
}
|