The Paned container can hold two widgets either side by side or one above the other with a divider between them. The divider has a button on it that can be used to resize the two widgets. Below is an example.
Example 6-4. Paned.java - Paned
import org.gnu.gtk.AttachOptions; import org.gnu.gtk.Gtk; import org.gnu.gtk.PolicyType; import org.gnu.gtk.ScrolledWindow; import org.gnu.gtk.SimpleList; import org.gnu.gtk.Table; import org.gnu.gtk.TextBuffer; import org.gnu.gtk.TextView; import org.gnu.gtk.VPaned; import org.gnu.gtk.Window; import org.gnu.gtk.WindowType; import org.gnu.gtk.event.LifeCycleEvent; import org.gnu.gtk.event.LifeCycleListener; public class PanedExample { TextView text = null; TextBuffer textBuffer = null; public PanedExample() { Window window = new Window(WindowType.TOPLEVEL); window.setTitle("Panned Windows"); window.setBorderWidth(10); window.setDefaultSize(450, 400); window.addListener(new LifeCycleListener() { public void lifeCycleEvent(LifeCycleEvent event) { if (event.isOfType(LifeCycleEvent.Type.DESTROY) || event.isOfType(LifeCycleEvent.Type.DELETE)) { Gtk.mainQuit(); } } }); VPaned vpaned = new VPaned(); window.add(vpaned); vpaned.show(); ScrolledWindow list = createList(); vpaned.add1(list); list.show(); Table table = createText(); vpaned.add2(table); table.show(); window.show(); } // create the list of messages public ScrolledWindow createList() { // Create a new scrolled window with scrollbars only if needed. ScrolledWindow scrolledWindow = new ScrolledWindow(null, null); scrolledWindow.setPolicy(PolicyType.AUTOMATIC, PolicyType.AUTOMATIC); // Create a new list and put it in the scrolled window SimpleList list = new SimpleList(); scrolledWindow.addWithViewport(list); list.show(); // Add some messages to the window for (int i = 0; i < 10; i++) { list.addEnd("Message #" + i); } return scrolledWindow; } // Create a scrolled text area that displays a "message" public Table createText() { // Create a table to hold the widget and scrollbars Table table = new Table(2, 2, false); // Put a text widget in the upper left hand corner. Note the // use of _SHRINK in the y direction. textBuffer = new TextBuffer(); text = new TextView(textBuffer); table.attach( text, 0, 1, 0, 1, AttachOptions.EXPAND.or(AttachOptions.FILL), AttachOptions.EXPAND.or(AttachOptions.FILL.or(AttachOptions.SHRINK)), 0, 0); String str = "From: pathfinder@nasa.gov\n" + "To: mom@nasa.gov\n" + "\n" + "We just got in this morning. The weather has been\n" + "great - clear but cold, and there are lots of fun sights.\n" + "Sojourner says hi. See you soon.\n" + " -Path\n"; textBuffer.insertText(str); text.show(); return table; } public static void main(String[] args) { // Initialize GTK Gtk.init(args); PanedExample panned = new PanedExample(); Gtk.main(); } }