import java.awt.*; public class ScrollingFrame extends Frame { protected Scrollbar _sbv; protected Scrollbar _sbh; protected Button _button; public ScrollingFrame(String title, Panel panel) { super(title); GridBagLayout gridbag = new GridBagLayout(); GridBagConstraints c = new GridBagConstraints(); setLayout(gridbag); c.fill = GridBagConstraints.BOTH; // Add the canvas c.anchor = GridBagConstraints.CENTER; c.weightx = 1.0; c.weighty = 1.0; c.gridwidth = GridBagConstraints.RELATIVE; c.gridheight = GridBagConstraints.RELATIVE; gridbag.setConstraints(panel, c); add(panel); c.fill = GridBagConstraints.VERTICAL; // Add vertical scrollbar c.weightx = 0.0; c.weighty = 0.0; c.gridwidth = GridBagConstraints.REMAINDER; c.gridheight = GridBagConstraints.RELATIVE; _sbv = new Scrollbar( Scrollbar.VERTICAL, 1, 1, 1, 1 ); _sbv.setLineIncrement( 1 ); _sbv.setPageIncrement( panel.size().height ); gridbag.setConstraints(_sbv, c); add(_sbv); c.fill = GridBagConstraints.HORIZONTAL; // Add horizontal scrollbar c.weightx = 0.0; c.weighty = 0.0; c.gridwidth = GridBagConstraints.RELATIVE; c.gridheight = GridBagConstraints.REMAINDER; _sbh = new Scrollbar( Scrollbar.HORIZONTAL, 1, 1, 1, 1 ); _sbh.setLineIncrement( 1 ); _sbh.setPageIncrement( panel.size().width ); gridbag.setConstraints(_sbh, c); add(_sbh); c.fill = GridBagConstraints.NONE; // Add spurious button c.weightx = 0.0; c.weighty = 0.0; c.gridwidth = GridBagConstraints.REMAINDER; c.gridheight = GridBagConstraints.REMAINDER; _button = new Button(); _button.setBackground( Color.blue ); gridbag.setConstraints(_button, c); add(_button); } public boolean handleEvent(Event evt) { if (evt.id == Event.WINDOW_ICONIFY) { hide(); return true; } if (evt.id == Event.WINDOW_DESTROY) { dispose(); return true; } return super.handleEvent(evt); } } // class GraphWindow