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 ...
Get Eclipse Cookbook 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.