Using Composites to Achieve Complex Designs
It is possible to use
combinations of
Composites
or Groups
together
with layouts to your advantage when you need to construct more
complex user interfaces than are possible with the single-container,
single-layout approach. You can, for example, design a
Shell
that utilizes one type of layout and add to
it Composite
or Group
objects
that use a different type of layout. Using this combination approach,
you can achieve almost any user interface design.
How do I do that?
Example 10-8 consists of three classes. The first is
a Composite
that makes use of
RowLayout
to display two
SWT.PUSH
-style Button
objects:
Example 10-8. Using RowLayout on a Composite
import org.eclipse.swt.events.*; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.RowLayout; import org.eclipse.swt.widgets.*; public class RowComposite extends Composite { final Button okBtn; final Button cancelBtn; public RowComposite(Composite c) { super(c, SWT.NO_FOCUS); RowLayout rl = new RowLayout( ); rl.wrap = false; rl.pack = false; this.setLayout(rl); okBtn = new Button(this, SWT.BORDER | SWT.PUSH); okBtn.setText("OK"); okBtn.setSize(30, 20); cancelBtn = new Button(this, SWT.BORDER | SWT.PUSH); cancelBtn.setText("Cancel"); cancelBtn.setSize(30, 20); cancelBtn.addSelectionListener(new SelectionAdapter( ) { public void widgetSelected(SelectionEvent e) { System.out.println("Cancel was clicked"); } }); } }
RowLayout
is perfect for this composite, since the desired effect is that ...
Get SWT: A Developer's Notebook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.