Thread View: pl.comp.lang.java
1 messages
1 total messages
Started by Artur Tyloch
Mon, 29 Sep 1997 23:58
Obsluga zdarzen w podklasie
Author: Artur Tyloch
Date: Mon, 29 Sep 1997 23:58
Date: Mon, 29 Sep 1997 23:58
169 lines
5107 bytes
5107 bytes
Czesc
Czy ktos moze wyjasnic jak, kiedy
uzywa sie metody enableEvents().
Lub gdzie mozna cos o tym znalezc.
(Poza artykulem Bieleckiego w Software 7/97)
jest tam napisane dosc ogolnie.
Nie czuje tego tak do konca :)
moze zacytuje co on pisze:
Cytat z Jan Bielecki Software 7/97
"Delegacyjne obsługiwanie zdarzen w Javie",
podrozdzial: Zastosowanie obslugi w podklasie
U podstaw delegacyjnego modelu obsługiwania zdarzeń stoi zamiar
wyeliminowania sytuacji, kiedy wyposażenie sterownika w zdolnoć
reagowania na zdarzenia wymaga utworzenia podklasy sterownika.
Majšc jednak na względzie przypadek, gdy jest pożšdane utworzenie
podklasy komponentu (np. podklasy przycisku Button), umożliwiono
reagowanie komponentu na wybrane zdarzenia za pomocš metody enableEvents
obj.enableEvents(AWTEvent.KindOf_EVENT_MASK);
w której obj jest odnonikiem do komponentu, KindOf jest napisem
identyfikujšcym kategorię zdarzeń.
Metoda enableEvents jest najczęciej wywoływana w konstruktorze
podklasy, kiedy to jej wywołanie przyjmuje postać ana;ogicznš do
enableEvents(AWTEvent.ACTION_EVENT_MASK);
Po takim uaktywnieniu, obsługa zdarzeń interesujšcych komponent może być
wykonana w metodzie processEvent (stanowišcej odpowiednik nieaktualnej
metody handleEvent)
protected void processEvent(AWTEvent evt)
oraz w metodach
protected void processKindOfEvent(KindOfEvent evt)
w których KindOfEvent jest napisem identyfikujšcym zdarzenie, np.
ActionEvent, MouseEvent, np.
protected void processActionEvent(ActionEvent evt)
W tabeli Metody do obsługiwania zdarzeń komponentowych podano pełen
zestaw metod rodziny processKindOfEvent, a w tabeli Maski uaktywniajšce,
pełen wykaz masek KindOf_EVENT_MASK, które mogš być użyte jako argumenty
metody enableEvents.
===================================================
Tabela Maski uaktywniajšce
ACTION_EVENT_MASK
ADJUSTMENT_EVENT_MASK
COMPONENT_EVENT_MASK
CONTAINER_EVENT_MASK
FOCUS_EVENT_MASK
ITEM_EVENT_MASK
KEY_EVENT_MASK
MOUSE_EVENT_MASK
MOUSE_MOTION_EVENT_MASK
TEXT_EVENT_MASK
WINDOW_EVENT_MASK
========== koniec
===================================================
Tabela Metody do obsługiwania zdarzeń komponentowych
processEvent
processComponentEvent
processContainerEvent
wszystkie komponenty
processActionEvent
Button, List, TextField, MenuItem
processItemEvent
Choice, List, Checkbox, CheckboxMenuItem
processTextEvent
TextField, TextArea
processAdjustmentEvent
Scrollbar
========== koniec
Na listingu Obsługa zdarzeń w podklasach komponentów pokazano program
posługujšcy się rozpatrzonymi metodami.
===================================================
Listing Obsługa zdarzeń w podklasach komponentów
<applet code=Master width=200 height=200>
</applet>
=========
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public
class Master extends Applet {
static Writer writer;
static Cleaner cleaner;
static TextArea printer;
public void init()
{
setLayout(new BorderLayout());
writer = new Writer();
add("North", writer);
cleaner = new Cleaner("Clean");
add("South", cleaner);
printer = new TextArea();
add("Center", printer);
}
public void start()
{
writer.requestFocus();
}
static void action(ActionEvent evt)
{
Object source = evt.getSource();
if(source == writer) {
String string = writer.getText();
printer.append(string + '\n');
} else if(source == cleaner) {
printer.setText("");
writer.requestFocus();
}
writer.setText("");
}
}
class Writer extends TextField {
Writer()
{
enableEvents(AWTEvent.ACTION_EVENT_MASK);
}
protected void processActionEvent(ActionEvent evt)
{
Master.action(evt);
}
}
class Cleaner extends Button {
Cleaner(String caption)
{
super(caption);
enableEvents(AWTEvent.ACTION_EVENT_MASK);
}
protected void processActionEvent(ActionEvent evt)
{
Master.action(evt);
}
}
koniec cytatu
Chyba nie naruszam tym praw autorskich 8-| (za bardzo)
pozdrowienia
Artur
P.S.
powinienem dostac jakas nagrode za aktywnosc na tej grupie :)
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads