Java Tutorial/SWT/SWT Event

Материал из Java эксперт
Перейти к: навигация, поиск

Add addPaintListener to Composite

   <source lang="java">

import org.eclipse.swt.SWT; import org.eclipse.swt.events.PaintEvent; import org.eclipse.swt.events.PaintListener; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.widgets.ruposite; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; public class CompositePaintListener {

public static void main (String [] args) {

 Display display = new Display ();
 final Shell shell = new Shell (display, SWT.SHELL_TRIM | SWT.H_SCROLL | SWT.V_SCROLL);
 final Composite composite = new Composite (shell, SWT.BORDER);
 composite.setSize (700, 600);
 final Color red = display.getSystemColor (SWT.COLOR_RED);
 composite.addPaintListener (new PaintListener() {
   public void paintControl (PaintEvent e) {
     e.gc.setBackground (red);
     e.gc.fillOval (5, 5, 690, 590);
   }
 });
 shell.open ();
 while (!shell.isDisposed()) {
   if (!display.readAndDispatch ()) display.sleep ();
 }
 display.dispose ();

} }</source>





Add and remove filter listeners

   <source lang="java">

public void addFilter(int eventType, Listener listener)

   public void removeFilter(int eventType, Listener listener)</source>
   
  
 
  



Add default selection listener to Combo

   <source lang="java">

import org.eclipse.swt.SWT; import org.eclipse.swt.layout.RowLayout; import org.eclipse.swt.widgets.rubo; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Shell; public class ComboSelectionListener {

 public static void main(String[] args) {
   Display display = new Display();
   Shell shell = new Shell(display);
   shell.setLayout(new RowLayout());
   Combo combo = new Combo(shell, SWT.NONE);
   combo.setItems(new String[] { "A-1", "B-1", "C-1" });
   combo.addListener(SWT.DefaultSelection, new Listener() {
     public void handleEvent(Event e) {
       System.out.println(e.widget + " - Default Selection");
     }
   });
   shell.pack();
   shell.open();
   while (!shell.isDisposed()) {
     if (!display.readAndDispatch())
       display.sleep();
   }
   display.dispose();
 }

}</source>





Adding AccessibleControlListener

   <source lang="java">

import org.eclipse.swt.SWT; import org.eclipse.swt.accessibility.Accessible; import org.eclipse.swt.accessibility.AccessibleControlAdapter; import org.eclipse.swt.accessibility.AccessibleControlEvent; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; public class AccessibleControlListenerAdding {

 public static void main(String[] args) {
   final Display display = new Display();
   Shell shell = new Shell(display);
   shell.setLayout(new FillLayout());
   Label label = new Label(shell, SWT.NONE);
   label.setText("asdf");
   Accessible accessible = label.getAccessible();
   accessible.addAccessibleControlListener(new AccessibleControlAdapter() {
     public void getState(AccessibleControlEvent e) {
       super.getState(e);
       System.out.println("AccessibleControlListener");
     }
   });
   shell.open();
   while (!shell.isDisposed()) {
     if (!display.readAndDispatch())
       display.sleep();
   }
   display.dispose();
 }

}</source>





Adding AccessibleListener

   <source lang="java">

import org.eclipse.swt.SWT; import org.eclipse.swt.accessibility.Accessible; import org.eclipse.swt.accessibility.AccessibleAdapter; import org.eclipse.swt.accessibility.AccessibleEvent; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; public class AccessibleListenerAdding {

 public static void main(String[] args) {
   final Display display = new Display();
   Shell shell = new Shell(display);
   shell.setLayout(new FillLayout());
   Label label = new Label(shell, SWT.NONE);
   label.setText("asdf");
   Accessible accessible = label.getAccessible();
   accessible.addAccessibleListener(new AccessibleAdapter() {
     public void getName(AccessibleEvent e) {
       super.getName(e);
       e.result = "Speak this instead of the text";
       System.out.println("Accessible");
     }
   });
   shell.open();
   while (!shell.isDisposed()) {
     if (!display.readAndDispatch())
       display.sleep();
   }
   display.dispose();
 }

}</source>





Add Resize listener to Shell

   <source lang="java">

import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Rectangle; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Shell; public class ShellResizeEvent {

public static void main (String [] args) {

 Display display = new Display ();
 final Shell shell = new Shell (display, SWT.SHELL_TRIM | SWT.H_SCROLL | SWT.V_SCROLL);
 shell.addListener (SWT.Resize,  new Listener () {
   public void handleEvent (Event e) {
     Rectangle rect = shell.getClientArea ();
     System.out.println(rect);
   }
 });
 shell.open ();
 while (!shell.isDisposed()) {
   if (!display.readAndDispatch ()) display.sleep ();
 }
 display.dispose ();

} }</source>





Demonstrate DisposeListener which is notified on the associated widget"s disposal

   <source lang="java">

import org.eclipse.swt.events.DisposeEvent; import org.eclipse.swt.events.DisposeListener; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; public class DisposeListenerWithShell {

 public static void main(String[] args) {
   Display display = new Display();
   Shell shell = new Shell(display);
   shell.setLayout(new GridLayout());
   // Create the child shell and the dispose listener
   final Shell childShell = new Shell(shell);
   childShell.addDisposeListener(new DisposeListener() {
     public void widgetDisposed(DisposeEvent event) {
        // When the child shell is disposed, change the message on the main shell
        System.out.println("Dispoase");
     }
   });
   childShell.setLayout(new FillLayout());
   childShell.setText("little brother");
   childShell.open();
   
   shell.open();
   while (!shell.isDisposed()) {
     if (!display.readAndDispatch()) {
       display.sleep();
     }
   }
 }

}</source>





Events

  1. SWT offers two types of listeners: untyped and typed.
  2. Untyped listeners can lead to smaller code.
  3. Typed listeners lead to more modular designs.


Get event type

   <source lang="java">

import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Shell; public class EventTypeGet {

 public static void main(String[] args) {
   Display display = new Display();
   Shell shell = new Shell(display);
   shell.setLayout(new GridLayout());
   Button button = new Button(shell, SWT.NONE);
   button.setText("Click and check the console");
   button.addListener(SWT.Selection, new Listener() {
     public void handleEvent(Event e) {
       System.out.println(getEventName(e.type)); 
       switch (e.type) {
       case SWT.Selection:
         System.out.println("Button pressed");
         break;
       }
     }
   });
   shell.open();
   while (!shell.isDisposed()) {
     if (!display.readAndDispatch()) {
       display.sleep();
     }
   }
 }
 public static String getEventName(int eventType) {
   switch(eventType) {
     case SWT.None:
       return "null";
     case SWT.KeyDown:
       return "key down";
     case SWT.KeyUp:
       return "key up";
     case SWT.MouseDown:
       return "mouse down";
     case SWT.MouseUp:
       return "mouse up";
     case SWT.MouseMove:
       return "mouse move";
     case SWT.MouseEnter:
       return "mouse enter";
     case SWT.MouseExit:
       return "mouse exit";
     case SWT.MouseDoubleClick:
       return "mouse double click";
     case SWT.Paint:
       return "paint";
     case SWT.Move:
       return "move";
     case SWT.Resize:
       return "resize";
     case SWT.Dispose:
       return "dispose";
     case SWT.Selection:
       return "selection";
     case SWT.DefaultSelection:
       return "default selection";
     case SWT.FocusIn:
       return "focus in";
     case SWT.FocusOut:
       return "focus out";
     case SWT.Expand:
       return "expand";
     case SWT.Collapse:
       return "collapse";
     case SWT.Iconify:
       return "iconify";
     case SWT.Deiconify:
       return "deiconify";
     case SWT.Close:
       return "close";
     case SWT.Show:
       return "show";
     case SWT.Hide:
       return "hide";
     case SWT.Modify:
       return "modify";
     case SWT.Verify:
       return "verify";
     case SWT.Activate:
       return "activate";
     case SWT.Deactivate:
       return "deactivate";
     case SWT.Help:
       return "help";
     case SWT.DragDetect:
       return "drag detect";
     case SWT.Arm:
       return "arm";
     case SWT.Traverse:
       return "traverse";
     case SWT.MouseHover:
       return "mouse hover";
     case SWT.HardKeyDown:
       return "hard key down";
     case SWT.HardKeyUp:
       return "hard key up";
     case SWT.MenuDetect:
       return "menu detect";
   }
   
   return "unkown ???";
 }
 

}</source>





implements general Event Listener

   <source lang="java">

import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Shell; public class EventListenerGeneral {

 public static void main(String[] args) {
   Display display = new Display();
   Shell shell = new Shell(display);
   Label label = new Label(shell, SWT.SHADOW_IN | SWT.CENTER);
   shell.setLayout(new GridLayout());
   Listener listener = new MouseEnterExitListener();
   label.setText("Point your cursor here ...");
   label.setBounds(30, 30, 200, 30);
   label.addListener(SWT.MouseEnter, listener);
   label.addListener(SWT.MouseExit, listener);
   shell.setSize(260, 120);
   shell.open();
   shell.open();
   while (!shell.isDisposed()) {
     if (!display.readAndDispatch()) {
       display.sleep();
     }
   }
 }

} class MouseEnterExitListener implements Listener {

 public void handleEvent(Event e) {
   switch (e.type) {
   case SWT.MouseEnter:
     System.out.println("Cursor enters the label");
     break;
   case SWT.MouseExit:
     System.out.println("Cursor leaves the label");
     break;
   }
 }

}</source>





Introducing Typed Listeners

  1. Typed listeners use classes and interfaces specific to each possible event.
  2. For example, to listen for a button click, register a SelectionListener implementation with the button using the button"s addSelectionListener() method.
  3. All typed events ultimately derive from a common class: TypedEvent.
  4. Many event classes have a boolean member called doit that you can set to false to cancel the processing of that event.

MemberDescriptionObject dataContains application-specific dataDisplay displayThe display where the event occurredint timeThe time at which the event occurredWidget widgetThe source of the event


Introducing Untyped Listeners

  1. The untyped listener interface is represented by the Listener interface
  2. It contains one method: void handleEvent(Event event)

Event Members

MemberDescriptionint buttonThe one-based index of the button that was clicked or released.char characterThe character that was typed.int countThe number of pending paint events.Object dataApplication-specific data.int detailA detail constant from the SWT class that contains details about the event.Display displayThe display where the event occurred.boolean doitA flag indicating whether to process this event. Not supported for all events.int endThe end of the range of modified text.GC gcThe graphics context associated with this event.int heightThe height in pixels of the rectangle that needs painting.Widget itemThe widget where the event occurred.int keyCodeThe key code of the key that was typed.int startThe beginning of the range of modified text.int stateMaskThe mask describing the state of the modifier keys at the time of the event.String textThe text to insert.int timeThe event"s time.int typeThe type of the event. This is the field to switch on to handle the various event types.Widget widgetThe widget that issued the event.int widthThe width in pixels of the rectangle that needs painting.int xEither the x offset of the rectangle that needs painting or the x coordinate of the mouse pointer at the time of the event, depending n the event.int yEither the y offset of the rectangle that needs painting or the y coordinate of the mouse pointer at the time of the event, depending on the event.

To add an untyped listener to a widget, call addListener() on it.



   <source lang="java">

void addListener(int eventType, Listener listener)</source>



eventType contains one of the event type constants from the SWT class:

TypeDescriptionSWT.ActivateTriggered when the widget becomes the active windowSWT.ArmTriggered when the widget is armedSWT.CloseTriggered when the widget is closedSWT.CollapseTriggered when a tree node is collapsedSWT.DeactivateTriggered when the widget is no longer the active windowSWT.DefaultSelectionTriggered when the default selection occursSWT.DeiconifyTriggered when the widget is restored from being minimizedSWT.DisposeTriggered when the widget is disposedSWT.DragDetectTriggered when the widget is draggedSWT.ExpandTriggered when a tree node is expandedSWT.FocusInTriggered when the widget gains focusSWT.FocusOutTriggered when the widget loses focusSWT.HardKeyDownTriggered when a special hardware key, such as on a Pocket PC device, is pressedSWT.HardKeyUpTriggered when a special hardware key, such as on a Pocket PC device, is releasedSWT.HelpTriggered when the user requests helpSWT.HideTriggered when the widget is hiddenSWT.IconifyTriggered when the widget is minimizedSWT.KeyDownTriggered when the user presses a keySWT.KeyUpTriggered when the user releases a keySWT.MenuDetectTriggered when a menu is selectedSWT.ModifyTriggered when the text of a widget is modifiedSWT.MouseDoubleClickTriggered when the mouse is double-clickedSWT.MouseDownTriggered when the mouse button is clickedSWT.MouseEnterTriggered when the mouse pointer enters the widgetSWT.MouseExitTriggered when the mouse pointer exits the widgetSWT.MouseHoverTriggered when the mouse pointer hovers over the widgetSWT.MouseMoveTriggered when the mouse pointer moves through the widgetSWT.MouseUpTriggered when the mouse button is releasedSWT.MoveTriggered when the widget is movedSWT.NoneNull eventSWT.PaintTriggered when the widget is paintedSWT.ResizeTriggered when the widget is resizedSWT.SelectionTriggered when the widget is selectedSWT.ShowTriggered when the widget is shownSWT.TraverseTriggered when the user tabs through the controlsSWT.VerifyTriggered when the text for the widget is about to change, allowing you to veto the change


SWT Message Keys and Values

KeyValueSWT_YesYesSWT_NoNoSWT_OKOKSWT_CancelCancelSWT_AbortAbortSWT_RetryRetrySWT_IgnoreIgnoreSWT_SampleSampleSWT_A_Sample_TextA Sample TextSWT_SelectionSelectionSWT_Current_SelectionCurrent SelectionSWT_FontFontSWT_ColorColorSWT_Extended_styleExtended styleSWT_SizeSizeSWT_StyleStyleSWT_SaveSaveSWT_Character_setCharacter setSWT_ColorDialog_TitleColorsSWT_FontDialog_TitleFontsSWT_Charset_WesternWesternSWT_Charset_EastEuropeanEast EuropeanSWT_Charset_SouthEuropeanSouth EuropeanSWT_Charset_NorthEuropeanNorth EuropeanSWT_Charset_CyrillicCyrillicSWT_Charset_ArabicArabicSWT_Charset_GreekGreekSWT_Charset_HebrewHebrewSWT_Charset_TurkishTurkishSWT_Charset_NordicNordicSWT_Charset_ThaiThaiSWT_Charset_BalticRimBaltic RimSWT_Charset_CelticCelticSWT_Charset_EuroEuroSWT_Charset_RomanianRomanianSWT_Charset_SimplifiedChineseSimplified ChineseSWT_Charset_TraditionalChineseTraditional ChineseSWT_Charset_JapaneseJapaneseSWT_Charset_KoreanKoreanSWT_Charset_UnicodeUnicodeSWT_Charset_ASCIIASCIISWT_InputMethodsInput Methods


SWT provides two kinds of event listening mechanism: typed and untyped.

A typed listener can be used to listen for only one particular typed event. For example, SelectionListener is a typed listener for event SelectionEvent. Untyped event listeners offer a generic, low-level mechanism to listen for events.



   <source lang="java">

import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; public class GenericEventUntyped {

 public static void main(String[] args) {
   Display display = new Display();
   Shell shell = new Shell(display);
   shell.setLayout(new GridLayout());
   Button button = new Button(shell, SWT.NONE);
   button.setText("Click and check the console");
   button.addSelectionListener(new SelectionListener() {
     public void widgetSelected(SelectionEvent arg0) {
       System.out.println("widgetSelected");
     }
     public void widgetDefaultSelected(SelectionEvent arg0) {
       System.out.println("widgetDefaultSelected");
     }
   });
   shell.open();
   while (!shell.isDisposed()) {
     if (!display.readAndDispatch()) {
       display.sleep();
     }
   }
 }

}</source>





The Event Model

  1. SWT uses the observer design pattern based event model.
  2. Multiple listeners can be registered to be notified.
  3. In SWT, only Widgets and Displays can have event listeners.

The following code demonstrates usage of a listener:



   <source lang="java">

import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; public class EventModelPattern {

 static Display display = new Display();
 public static void main(String[] args) {
   Shell shell = new Shell(display);
   shell.setLayout(new FillLayout());
   Button button = new Button(shell, SWT.PUSH);
   button.setText("push me");
   button.addSelectionListener(new SelectionListener() {
     public void widgetDefaultSelected(SelectionEvent e) {
     }
     public void widgetSelected(SelectionEvent e) {
       System.out.println("Button pushed.");
     }
   });
   shell.open();
   while (!shell.isDisposed()) { // Event loop.
     if (!display.readAndDispatch())
       display.sleep();
   }
   display.dispose();
 }

}</source>





The listener notification process

   <source lang="java">

import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Shell; public class DisplayFilterEvent {

 public static void main(String[] args) {
   Display display = new Display();
   Shell shell = new Shell(display);
   shell.setText("Left click your mouse");
   shell.setSize(200, 100);
   shell.open();
   shell.addListener(SWT.MouseDown, new SimpleListener("Shell mouse down listener"));
   display.addFilter(SWT.MouseDown, new SimpleListener("Display mouse down Listener"));
   display.addFilter(SWT.MouseUp, new SimpleListener("Display mouse up Listener"));
   shell.open();
   while (!shell.isDisposed()) { // Event loop.
     if (!display.readAndDispatch())
       display.sleep();
   }
   display.dispose();
 }

} class SimpleListener implements Listener {

 String name;
 public SimpleListener(String name) {
   this.name = name;
 }
 public void handleEvent(Event e) {
   System.out.println("Event: [" + e.toString() + "] from " + name
       + ". \tCurrent Time (in ms):  " + System.currentTimeMillis());
 }

}</source>





Typed Listeners

SWT provides implementations of every listener interface that has more than one method. The names of these classes end in Adapter.



   <source lang="java">

Listener Description Event Adapter ArmListener Listens for arm events ArmEvent None ControlListener Listens for move and resize events ControlEvent ControlAdapter DisposeListener Listens for dispose events DisposeEvent None FocusListener Listens for focus gained and FocusEvent FocusAdapter

                lost events

HelpListener Listens for help requests HelpEvent None KeyListener Listens for key presses and KeyEvent KeyAdapter

                releases  

MenuListener Listens for menu events MenuEvent MenuAdapter ModifyListener Listens for text modifications ModifyEvent None MouseListener Listens for mouse button presses MouseEvent MouseAdapter MouseMoveListener Listens for mouse movements MouseEvent None MouseTrackListener Listens for when the mouse MouseEvent MouseTrackAdapter

                  enters, exits, or hovers over a control  

PaintListener Listens for paint events PaintEvent None SelectionListener Listens for selection events SelectionEvent SelectionAdapter

                 (for example, button clicks)  

ShellListener Listens for shell events ShellEvent ShellAdapter TraverseListener Listens for traverse events TraverseEvent None TreeListener Listens for tree events TreeEvent TreeAdapter VerifyListener Listens for, and potentially VerifyEvent None

                 intercepts, text modifications</source>
   
  
 
  



Untyped Events and Untyped Event Listeners

An untyped event listener can be registered to listen for any type of event. SWT has two classes for untyped event:

  1. an interface Listener.
  2. an event class named Event.



   <source lang="java">

import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Shell; public class UntypedEventListener {

 public static void main(String[] args) {
   Display display = new Display();
   Shell shell = new Shell(display);
   shell.setLayout(new GridLayout());
   Button button = new Button(shell, SWT.NONE);
   button.setText("Click and check the console");
   button.addListener(SWT.Selection, new Listener() {
     public void handleEvent(Event e) {
       
       System.out.println(e.button);
       
       
       switch (e.type) {
       case SWT.Selection:
         System.out.println("Button pressed");
         break;
       }
     }
   });
   shell.open();
   while (!shell.isDisposed()) {
     if (!display.readAndDispatch()) {
       display.sleep();
     }
   }
 }

}</source>





Using ControlListener

A ControlListener listens for resize or move events.



   <source lang="java">

import org.eclipse.swt.events.ControlAdapter; import org.eclipse.swt.events.ControlEvent; import org.eclipse.swt.graphics.Rectangle; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; public class ControlListenerUsing {

 public static void main(String[] args) {
   Display display = new Display();
   Shell shell = new Shell(display);
   shell.setLayout(new GridLayout());
   shell.addControlListener(new ControlAdapter() {
     public void controlResized(ControlEvent event) {
       Shell shell = (Shell) event.getSource();
       Rectangle rect = shell.getClientArea();
       System.out.println(rect);
     }
   });
   shell.open();
   while (!shell.isDisposed()) {
     if (!display.readAndDispatch()) {
       display.sleep();
     }
   }
 }

}</source>





Using FocusListener

FocusListener is informed when a control gains or loses the focus.



   <source lang="java">

import org.eclipse.swt.SWT; import org.eclipse.swt.events.FocusEvent; import org.eclipse.swt.events.FocusListener; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; public class FocusListenerUsing {

 public static void main(String[] args) {
   Display display = new Display();
   Shell shell = new Shell(display);
   shell.setLayout(new GridLayout(3, true));
   shell.setText("One Potato, Two Potato");
   // Create the focus listener
   FocusListener listener = new FocusListener() {
     public void focusGained(FocusEvent event) {
       Button button = (Button) event.getSource();
       button.setText("I"m It!");
     }
     public void focusLost(FocusEvent event) {
       Button button = (Button) event.getSource();
       button.setText("Pick Me!");
     }
   };
   // Create the buttons and add the listener to each one
   for (int i = 0; i < 6; i++) {
     Button button = new Button(shell, SWT.PUSH);
     button.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
     button.setText("Pick Me!");
     button.addFocusListener(listener);
   }
   // Display the window
   shell.pack();
   shell.open();
   while (!shell.isDisposed()) {
     if (!display.readAndDispatch()) {
       display.sleep();
     }
   }
   display.dispose();
 }

}</source>





Using HelpListener

   <source lang="java">

import org.eclipse.swt.SWT; import org.eclipse.swt.events.HelpEvent; import org.eclipse.swt.events.HelpListener; import org.eclipse.swt.layout.RowLayout; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; public class HelpListenerUsing {

 public static void main(String[] args) {
   Display display = new Display();
   Shell shell = new Shell(display);
   shell.setLayout(new RowLayout());
   Text text = new Text(shell, SWT.SINGLE | SWT.BORDER);
   text.setText("press F1 function to see the help message.");
   text.addHelpListener(new HelpListener() {
     public void helpRequested(HelpEvent arg0) {
       System.out.println("Help wanted");
     }
   });
   shell.open();
   while (!shell.isDisposed()) {
     if (!display.readAndDispatch()) {
       display.sleep();
     }
   }
   display.dispose();
 }

}</source>





Using ModifyListener

   <source lang="java">

import org.eclipse.swt.SWT; import org.eclipse.swt.events.ModifyEvent; import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.events.VerifyEvent; import org.eclipse.swt.events.VerifyListener; import org.eclipse.swt.layout.RowLayout; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; public class ModifyListenerUsing {

 public static void main(String[] args) {
   Display display = new Display();
   Shell shell = new Shell(display);
   shell.setLayout(new RowLayout());
   Text text = new Text(shell, SWT.SINGLE | SWT.BORDER);
   text.setText("Type somthing to modify.");
   text.addModifyListener(new ModifyListener(){
     public void modifyText(ModifyEvent arg0) {
       System.out.println("Text modified");
       
     }});
   shell.open();
   while (!shell.isDisposed()) {
     if (!display.readAndDispatch()) {
       display.sleep();
     }
   }
   display.dispose();
 }

}</source>





Using SelectionListener

   <source lang="java">

import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; public class ButtonSelectionListener {

 public static void main(String[] args) {
   Display display = new Display();
   Shell shell = new Shell(display);
   shell.setLayout(new GridLayout());
   Button button = new Button(shell, SWT.NONE);
   button.setText("Click and check the console");
   button.addSelectionListener(new SelectionAdapter() {
     public void widgetSelected(SelectionEvent event) {
       System.out.println("selection event");
     }
   });
   shell.open();
   while (!shell.isDisposed()) {
     if (!display.readAndDispatch()) {
       display.sleep();
     }
   }
 }

}</source>





Using VerifyListener

   <source lang="java">

import org.eclipse.swt.SWT; import org.eclipse.swt.events.VerifyEvent; import org.eclipse.swt.events.VerifyListener; import org.eclipse.swt.layout.RowLayout; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; public class VerifyListenerUsing {

 public static void main(String[] args) {
   Display display = new Display();
   Shell shell = new Shell(display);
   shell.setLayout(new RowLayout());
   Text text = new Text(shell, SWT.SINGLE | SWT.BORDER);
   text.setText("Type somthing to verify.");
   text.addVerifyListener(new VerifyListener(){
     public void verifyText(VerifyEvent arg0) {
       System.out.println("verifying");
       
     }});
   shell.open();
   while (!shell.isDisposed()) {
     if (!display.readAndDispatch()) {
       display.sleep();
     }
   }
   display.dispose();
 }

}</source>