Események

Ha létrehozta a kijelzőt és néhány felületi elemet, és elindította az alkalmazás üzenetciklusát, akkor hol történik a valós munka? Ez akkor történik, amikor az esemény kiolvasására kerül és átkerül a felületi elemhez. Az alkalmazáslogika nagy része a felhasználói eseményekre válaszul kerül megvalósításra.

Az alapminta az, hogy hozzáad egy figyelőt néhány vezérlőelemhez, és a megfelelő esemény bekövetkezésekor a figyelőkód végrehajtásra kerül. Ez az egyszerű példa az org.eclipse.swt.examples.helloworld.HelloWorld3 elemből származik:

   Display display = new Display ();
   Shell shell = new Shell (display);
   Label label = new Label (shell, SWT.CENTER);
   ...
   shell.addControlListener (new ControlAdapter () {
      public void controlResized (ControlEvent e) {
         label.setBounds (shell.getClientArea ());
      }
   });

Minden típusú figyelőhöz létezik egy felület, amely megadja a figyelőt (XyzListener), egy osztályt, amely biztosítja az eseményinformációkat (XyzEvent), és egy API metódus a figyelő hozzáadásához (addXyzListener). Ha több metódus van megadva a figyelőfelületen, akkor a figyelőfelületet megvalósító és az üres metódusokat biztosító adapter (XyzAdapter) is biztosított. Az összes esemény, figyelő és adapter az org.eclipse.swt.events csomagban van megadva.

Az alábbi táblázatok összefoglalják a rendelkezésre álló eseményeket és az eseményeket támogató felületi elemeket. Az események két általános kategóriába sorolhatók: magasszintű események, amelyek egy logikai műveletet ábrázolnak a vezérlőelemen, és alacsonyszintű események, amelyek specifikusabb felhasználói interakciókat írnak le. A magasszintű események több alacsonyszintű eseménnyel ábrázolhatók, amelyek platformonként különbözhetnek. Az alacsonyszintű események csak egyéni felületi elem megvalósításokhoz használhatók.

Magasszintű események

Eseménytípus

Leírás

Activate, Decativate Egy vezérlőelem aktiválásakor vagy letiltásakor kerül előállításra.
Arm A MenuItem élesítve van (ki van jelölve és kiválasztásra készen áll).
Close A parancsértelmező bezárásra kerül, amint az ablakkezelő kéri.
DefaultSelection A felhasználó egy alapértelmezett kiválasztási művelet meghívásával kiválaszt egy elemet. Például az Enter megnyomásával vagy dupla kattintással a táblázat egyik sorára.
Dispose A programozási eljárással vagy felhasznál által eltávolítandó felületi elem.
DragDetect A felhasználó kezdeményezett egy lehetséges húzás műveletet.
Expand, Collapse A fa egyik eleme kibontásra vagy összehúzásra került.
Help A felhasználó súgót kért egy felületi elemhez. Ez Windows alatt például az F1 billentyű megnyomásakor történik.
Iconify, Deiconify A parancsértelmező minimálisra csökkentett, maximálisra növelt vagy visszaállított.
MenuDetect A felhasználó egy előugró menüt kért.
Modify A felületi elem szövege módosítva lett.
Move, Resize A vezérlőelem pozíciója vagy mérete módosítva lett, programozási eljárással vagy a felhasználó által.
Selection A felhasználó a vezérlőelemen kiválaszt egy elemet. Például a táblázat egyik sorára kattintva vagy az elemek közötti billentyűzet-navigációval.
SetData Virtuális táblázat használata esetén a TableItemen beállítandó adatok.
Show, Hide A vezérlőelem láthatósága megváltozott.
Traverse A felhasználó egy billentyűleütéssel megpróbálja kivonni magát a vezérlés alól. Ehhez például az esc vagy tab billentyű használható.
Verify A felületi elem szövege módosításra kerül. Ez az esemény lehetővé teszi az alkalmazás számára a szöveg módosítását vagy a módosítás megakadályozását.

Alacsonyszintű események

Eseménytípus

Leírás

FocusIn, FocusOut A fókuszt megadta vagy elvette a rendszer.
KeyDown, KeyUp A felhasználó lenyomott vagy felengedett egy billentyűt, amikor a vezérlőelem billentyűzetfókusszal rendelkezett.
MouseDown, MouseUp, MouseDoubleClick A felhasználó megnyomta, felengedte vagy duplán kattintott az egérgombbal a vezérlőelemen.
MouseMove A felhasználó a vezérlőelemre mozgatta az egeret.
MouseEnter, MouseExit, MouseHover Az egér belépett, kilépett a vezérlőelemből, illetve fölötte lebeg.
MouseWheel Az egérgörgő elforgatásra került.
Paint A vezérlőelem sérült és újrafestést igényel.

Nem típusos események

A fent leírt típusos eseményeken felül az SWT alacsony szintű, nem típusos felületi elem eseménymechanizmust is támogat. A nem típusos mechanizmus egy eseménytípust azonosító konstansra épül, és megad egy általános figyelőt, amelyet a konstanshoz biztosítanak. Ennek segítségével a figyelő megvalósíthat egy "esetstílus"-figyelőt. Az alábbi részletben megadunk egy általános eseménykezelőt és számos figyelőt adunk hozzá egy parancsértelmezőhöz.

   Shell shell = new Shell ();
   Listener listener = new Listener () {
      public void handleEvent (Event e) {
         switch (e.type) {
            case SWT.Resize:
               System.out.println ("Resize received");
               break;
            case SWT.Paint:
               System.out.println ("Paint received");
               break;
            default:
               System.out.println ("Unknown event received");
         }
      }
   };
   shell.addListener (SWT.Resize, listener);
   shell.addListener (SWT.Paint, listener);