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 ...
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.