8.10. Creating Nonrectangular Windows
Problem
You want to wow users with windows of arbitrary shapes, using them to display company logos, game pieces, advertisements, and so on.
Solution
Create a nonrectangular shell using shell regions in Eclipse 3.0. In
Eclipse 3.0, SWT shells can now have an irregular shape defined by
regions. As an example (NonRectangularApp at
this book’s site), we’ll create a
blue doughnut-shaped window with an Exit button in it. All you have
to do is to create a shell, create a Region object
that defines the shape you want to use, and use the
shell’s setRegion method to
configure the shell.
Discussion
In this example, we’ll use a method named
createCircle to create circular regions. The
following example shows how to use that method and those regions to
create a doughnut-shaped shell that we’ll color blue
using the shell’s setBackground
method. Note that you can add and cut regions from the final shell
using the Region class’s
add and subtract methods:
final Display display = new Display( ); final Shell shell = new Shell(display, SWT.NO_TRIM); Region region = new Region( ); region.add(createCircle(50, 50, 50)); region.subtract(createCircle(50, 50, 20)); shell.setRegion(region); shell.setSize(region.getBounds( ).width, region.getBounds( ).height); shell.setBackground(display.getSystemColor(SWT.COLOR_BLUE)); . . .
To create circles, the createCircle method returns
an array of points outlining the circle. Here’s how
this method does that:
static int[] createCircle(int ...
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