8.5. Positioning Widgets and Using Layouts
Problem
You need to position a widget in an SWT shell.
Solution
Several possibilities are available; for example, you can use the
widget’s setBounds method, other
methods, or an SWT layout.
Discussion
You can specify where to place an SWT widget anywhere in a shell by
using its setBounds method like so (all
measurements are in pixels, where (0, 0) is at upper left):
Label label = new Label(composite, SWT.PUSH);
label.setText("Label 0");
label.setBounds(100, 100, 150, 120);Alternatively, you can use the setLocation(int x, int y) method to position a widget’s upper
left corner, followed by the setSize(int width, int height) method to set the widget’s size.
Tip
Besides using the setSize method, you can use the
widget’s pack( ) method to let
the widget resize itself to its preferred size (for example, for a
button, pack( ) sets the size of the button to
just enclose its caption).
You also can use an SWT layout to specify how to arrange your widgets. Four layout classes are built into SWT:
-
FillLayout Fills a shell’s client area
-
FormLayout Arranges widgets relative to a parent composite or to another widget
-
GridLayout Arranges widgets in a grid
-
RowLayout Arranges widgets in either horizontal rows or vertical columns
Here’s an example using the grid layout. In this
case, we’re going to create a grid of four columns,
filling those columns with SWT labels. We start by creating a new
GridLayout object, setting the number of columns in the layout to 4, and ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access