Creating an SWT Application

To create the Browser project, you're going to have to know how SWT applications work. Take a look at Figure 8.2, where you'll see just about the simplest such application. It just displays the text “An SWT label, very cool.” in an SWT Label widget inside an SWT window.

Figure 8.2. An SWT application.


This application, LabelProject.java, starts importing the SWT classes it needs and creating a new LabelProject object in the main method:

					import org.eclipse.swt.*;
					import org.eclipse.swt.widgets.*;
public class LabelProject
{
        public static void main(String [] args)
					{
					new LabelProject();
					}
        .
        .
        .
}

In the constructor, you create a new GUI handler of the SWT Display class, and then you create a new Shell object using that Display object. It's that Shell object that corresponds to the window you see in Figure 8.2. Here's how you create these objects:

import org.eclipse.swt.*;
import org.eclipse.swt.widgets.*;

public class LabelProject
{
      Display display;
					Shell shell;

      public static void main(String [] args)
      {
          new LabelProject();
      }

      LabelProject()
      {
       display = new Display();
					shell = new Shell(display);
					shell.setSize(200, 200);
        .
        .
        .
}

You can find the significant methods of the SWT Shell class in Table 8.1. This class is an important one; it's the basis of the browser window you see in Figure 8.1.

Table 8.1. Significant Methods of the org.eclipse.swt.widgets.Shell Class
MethodDoes This
void addShellListener(ShellListener listener)Adds the given listener to the listeners that will be notified when events occur in the widget
void close()Closes the widget, just as if the user clicked the close button
void dispose()Disposes of the operating system resources connected to this the widget
Rectangle getBounds()Returns a Rectangle object holding the widget's size and location
boolean getEnabled()Returns true if the widget is enabled. Returns false otherwise
Point getLocation()Returns a point holding the widget's location
Region getRegion()Returns a Region object holding the widget's location
Point getSize()Returns a point holding the widget's size
boolean isEnabled()Returns true if the widget is enabled. Returns false otherwise
boolean isVisible()Returns true if the widget is visible. Returns false otherwise
void open()Opens the widget, making it visible
void removeShellListener(ShellListener listener)Removes the listener from the widget
void setEnabled(boolean enabled)Enables the widget if you pass a value of true, and disables it if you pass false
void setRegion(Region region)Sets the shape of the shell to the region you pass this method
void setVisible(boolean visible)Makes the widget visible if you pass it a value of true. Makes the widget invisible otherwise

Now you create an SWT label to hold the text displayed in Figure 8.2. To create the label, you pass the shell object to the label's constructor. Then you can use the label's setText method to set the displayed text, and you can use the setBounds method to specify where you want it (this centers text in the label with the SWT.CENTER style):

import org.eclipse.swt.*;
import org.eclipse.swt.widgets.*;

public class LabelProject
{
      Display display;
      Shell shell;
      Label label;

      public static void main(String [] args)
      {
          new LabelProject();
      }

      LabelProject()
      {
       display = new Display();
       shell = new Shell(display);
       shell.setSize(200, 200);

       label = new Label(shell, SWT.CENTER);
					label.setText("An SWT label, very cool.");
					label.setBounds(5, 20, 180, 40);
        .
        .
        .
}

You can find the significant methods of the SWT Label class in Table 8.2.

Table 8.2. Significant Methods of the org.eclipse.swt.widgets.Label Class
MethodDoes This
Point computeSize(int wHint, int hHint, boolean changed)Returns the preferred size of the label
int getAlignment()Returns a constant indicating the position of text or an image in the label
Image getImage()Returns the label's image, if it has one, or null otherwise
String getText()Returns the label's text, if there is any, or null otherwise
void setAlignment(int alignment)Sets how text and images should appear in the label
void setImage(Image image)Sets the image that will appear in the label
void setText(String string)Sets the text that will appear in the label

All that's left is to display the shell and handle the window-closing event, which happens when the user clicks the close button, by disposing of the display object:

import org.eclipse.swt.*;
import org.eclipse.swt.widgets.*;

public class LabelProject
{
      Display display;
      Shell shell;
      Label label;

      public static void main(String [] args)
      {
          new LabelProject();
      }

      LabelProject()
      {
       display = new Display();
       shell = new Shell(display);
       shell.setSize(200, 200);
        .
        .
        .
       shell.open();
					while(!shell.isDisposed()) {
					if(!display.readAndDispatch()) display.sleep();
					}
					display.dispose();
					}
}

That completes LabelProject.java. To compile it, make sure swt.jar is in your classpath. For example, if swt.jar is in the same directory as LabelProject.java, set the classpath this way:

%set classpath=swt.jar;.

Then compile LabelClass.java this way (this assumes javac is in your path; otherwise, prefix it with the correct path):

%javac LabelClass.java

To run the resulting LabelClass.class file, you have to tell Java where to find the SWT native code support, such as in win32-3063.dll and swt-win32-3063.dll in Windows. Assuming you've copied the needed files to the same directory where LabelClass.class is, you can execute that class file like this:

%java -Djava.library.path=. LabelClass

Running this application should give you the results you see in Figure 8.2.

That's the basics of an SWT application—at least one that does nothing but displaying some text. The Browser project is going to have to do a lot more, however, such as handling SWT events such as button clicks.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.145.63.62