import java.awt.event.* ; import java.awt.* ; import java.net.* ; import java.util.* ; public class CollapsingPane extends Panel implements CollapseListener { public CollapsingPane( Component c) { super() ; _containedComponent = c ; _handle = new CollapseHandle() ; setLayout( new BorderLayout() ) ; add( "North" , _handle ) ; add( "Center", _containedComponent ) ; _handle.addCollapseListener( this ) ; } public CollapsingPane() { // for test purposes this( new Button( "A TEST" ) ) ; } public void restore( AWTEvent e ) { System.out.println( "trying to restore..." ); _containedComponent.setVisible( true ); redraw() ; } public void collapse( AWTEvent e ) { _containedComponent.setVisible( false ); redraw() ; } private void redraw() { Component x = _containedComponent ; while( x.getParent() != null ) { x = x.getParent() ; } System.out.println( x ) ; x.validate() ; x.repaint() ; } private CollapseHandle _handle ; private Component _containedComponent ; }