miten tehdään globaali näppiksen kuuntelija joka reagoi painalluksiin riippumatta valitusta komponentista yms. kunhan vain itse applet on aktiivinen?
globaali keylistener
helppo kysymys
2152
0Äänestä
Muut lukivat myös
Odottaa vastausta
Näihin keskusteluihin ei ole vielä vastattu. Ole ensimmäinen.
Vastaukset 2
Vanhimmat
En tiedä, mutta jos sulle riittää staattinen metodi jolla voi lisätä KeyListenerin kerralla kaikkiin ikkunan komponentteihin, niin alla on esimerkki siitä. Kyseinen toiminto ajaa yksinkertaisissa sovelluksissa kuvaamaasi toimintoa.
Tuon "lisääKeylistenerJokaiseen" -metodin ensimmäiseksi parametriksi annetaan siis esim. sen ikkunan olio jonka kaikkiin komponentteihin KeyListeneri (toinen parametri) halutaan lisätä.
--- ESIMERKKI ALKAA ---
import java.applet.Applet;
import java.awt.Button;
import java.awt.Component;
import java.awt.Container;
import java.awt.TextField;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
public class AppletEsimerkki extends Applet implements KeyListener {
public void init() {
add(new TextField("Tekstikenttä 1", 35));
add(new TextField("Tekstikenttä 2", 35));
add(new Button("Painike1 1"));
add(new Button("Painike2 2"));
lisääKeylistenerJokaiseen(this, this);
}
public void keyTyped(KeyEvent e) {
}
public void keyPressed(KeyEvent e) {
System.out.println("Painettu: " e.getKeyChar());
}
public void keyReleased(KeyEvent e) {
}
public static void lisääKeylistenerJokaiseen(Component component, KeyListener keylistener) {
if (component != null) {
if (Container.class.isInstance(component))
for (Component childComponent : ((Container) component).getComponents())
lisääKeylistenerJokaiseen(childComponent, keylistener);
for (KeyListener oneKeylistener : component.getKeyListeners())
if (oneKeylistener == keylistener)
return;
component.addKeyListener(keylistener);
}
}
}
--- ESIMERKKI LOPPUU ---
Init metodin sisennys meni ulkoasullisesti hieman pieleen.