/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
Opretning af event
Fra : Allan Schmidt


Dato : 12-09-02 09:41

Jeg har i et større program lavet et panel (JPanel) der indeholder et
numerisk tastatur, da det skal køre på en touchscreen. Da tastaturet skal
bruges flere steder og man nogle steder ikke vil vente på det vil jeg gerne
kunne sætte en ActionListener på det og så fra panelet aktivere en Action
når man trykker på enter.
Håber det giver mening.
Kan det gøres... og hvordan?
Er det måden at gøre det på?

Allan



 
 
Peter Lind (12-09-2002)
Kommentar
Fra : Peter Lind


Dato : 12-09-02 14:38


"Allan Schmidt" <as8009@ehs.dk> wrote:
> Jeg har i et større program lavet et panel (JPanel) der indeholder et
> numerisk tastatur, da det skal køre på en touchscreen. Da tastaturet skal
> bruges flere steder og man nogle steder ikke vil vente på det vil jeg
gerne
> kunne sætte en ActionListener på det og så fra panelet aktivere en Action
> når man trykker på enter.
> Håber det giver mening.

Måske...

> Kan det gøres... og hvordan?

Ja, næsten alt kan lade sig gøre...

> Er det måden at gøre det på?

Det kommer lidt an på hvad du egentlig vil.

Jeg går ud fra at du har lavet dit 'tastatur' så det extender JPanel, f.eks
class NumericalKeypad extends JPanel.
Hvis du nu også vil kunne lytte til actions på det, skal du blot tilføje en
addActionListener metode.
f.eks:

private java.util.List listeners;
// husk listeners = new java.util.ArrayList() i din konstruktør
public void addActionListener( ActionListener listener )
{
listeners.add( listener );
}

Når der så skal sendes en action til dine action-listeners, itererer du
igennem listen af listeners, og kalder actionPerformed på hver, f.eks:

ActionEvent e = new ActionEvent( this, ActionEvent.ACTION_PERFORMED,
"enter");

for( int l=0; l < listeners.size(); l++ )
{
((ActionListener)listeners.get(l)).actionPerformed( e );
}

Du skal selvfølgelig have din egen actionListener i NumericalKeypad der
lytter på om der bliver trykket på enter, og aktiverer denne lille sekvens.

Det skulle kunne gøre det du eftersøger - men måske det ville være smartere
at lade dit keypad sende almindelige KeyEvents ud - men det er selvfølgelig
lidt mere kompliceret.

mvh
Peter Lind




Allan Schmidt (17-09-2002)
Kommentar
Fra : Allan Schmidt


Dato : 17-09-02 09:24

> Jeg går ud fra at du har lavet dit 'tastatur' så det extender JPanel,
f.eks
> class NumericalKeypad extends JPanel.
> Hvis du nu også vil kunne lytte til actions på det, skal du blot tilføje
en
> addActionListener metode.
> f.eks:
>
> private java.util.List listeners;
> // husk listeners = new java.util.ArrayList() i din konstruktør
> public void addActionListener( ActionListener listener )
> {
> listeners.add( listener );
> }
>
> Når der så skal sendes en action til dine action-listeners, itererer du
> igennem listen af listeners, og kalder actionPerformed på hver, f.eks:
>
> ActionEvent e = new ActionEvent( this, ActionEvent.ACTION_PERFORMED,
> "enter");
>
> for( int l=0; l < listeners.size(); l++ )
> {
> ((ActionListener)listeners.get(l)).actionPerformed( e );
> }

Takker for svaret. Det var meget nyttigt, men jeg arbejdede videre og kom
frem til at bruge:
int i = Integer.parseInt(out.getText());
firePropertyChange("Enter",0,i);

og så sætte en PropertyChangeListener på Panelet som reagerer på "Enter" så
kan den bruge getNewValue(); til at få værdien istedet for at den selv skal
køre en funktion på NumTast for at hente den.

Allan



Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408521
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste