Toon posts:

[Java] processKeyEvent en enableEvent

Pagina: 1
Acties:
  • 102 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik las hier;
http://javaboutique.internet.com/tutorials/Java_by_Example/section6_4.html

hoe je programmas kan laten luisteren zonder keylistener toe te hoeven voegen. Echter deze methode is deprecated en is vervangen door processKeyEvent, maar hoe werkt deze. Ik wil namelijk wel toetsinvoer mogelijk maken zonder dat ik ergens een Textfield heb staan en met addKeyListener moet dat wel (Panel werkt bij mij niet zo makkelijk).

Verwijderd

Topicstarter
*bump*

Zoek uren het gehele net af, maar geen enkele javagoeroe die me ff dat uitlegt, iemand toch wel, plz???

Verwijderd

Zeg uit welk sprookje heb jij gelezen dat je voor toetsaanslagen persee een textfield nodig zou hebben?

De keylistener luisterd naar het active component. Dat kan zijn waar 't laatst op geklikt is, of waar de muis zich op bevindt. Conlcusie, voeg aan iedere panel, canvas of ander component een keylistener toe.

Verwijderd

Topicstarter
Ok, een panel werkt ietwat lastig, dat heb ik al eerder geprobeerd en ik zelf heb geen idee wat een canvas is, maar het mag geen grafische weergave hebben (op het forum van java.sun.com stelde iemand me al voor met addAWTEventListener te werken omdat die alles opvangt, 'systemwide' volgens de API.) Kan iemand dat uitleggen misschien, wat DAT inhoudt?

Verwijderd

Topicstarter
De keylistener luisterd naar het active component. Dat kan zijn waar 't laatst op geklikt is, of waar de muis zich op bevindt. Conlcusie, voeg aan iedere panel, canvas of ander component een keylistener toe.
Dat is het hem; ik wil geen grafische weergave van het object dat luistert naar de toetsten (of de grafische weergave is niet te zien)

Verwijderd

Topicstarter
*bump*

Is er een java-guru met een klein beetje tijd over in de zaal?

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Misschien kan je even gewoon uitleggen wat je wilt bereiken? Je bent vooral bezig met uitleggen van de mogelijke oplossingen die je zelf al bedacht hebt. Deze zijn allemaal echter niet echt logisch.

Als je nu eens omschrijft wat je wilt maken, is het eenvoudiger om te adviseren hoe je dit kan aanpakken :) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Verwijderd

Topicstarter
oh ja, best wel stom eigenlijk :+

Ik wil een spel maken dat keyboardinput ontvangt zonder dat er een grafische weergave is van het object dat luistert (dus geen textfield bovenin ofzo) en eigenlijk geen panel, want dat vond ik zelf wat lastiger werken, moet je in die panel gaan werken enzo.

Ik zag dat dat bij java 1.0 heel simpel was, want je gebruikte gewoon keyDown en een listener was nergens nodig. Nu, volgens de api zou processKeyEvent nu gebruikt moeten worden, want keyDown is deprecated. Daarom dacht ik hieraan. Maar andere ideeen zijn zeker welkom.

Verwijderd

zie ik het nu te simpel of wat???

je hebt een spel, dat spel zit in een frame of applet.
ik neem aan dat het spel zichtbaar is.
de keylistener kan ook gewoon in een frame gezet worden.

voordat we er helemaal niet meer uitkomen, hier een voorbeeld.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import java.awt.Frame;
import java.awt.event.WindowListener;
import java.awt.event.WindowEvent;
import java.awt.event.KeyListener;
import java.awt.event.KeyEvent;

class Spel
extends Frame
implements WindowListener, KeyListener
{
    Spel()
    {
        setBounds(50,50,100,100);
        show();

        addWindowListener(this);
        addKeyListener(this);
    }

  public void windowOpened     (WindowEvent evt) {}
  public void windowActivated  (WindowEvent evt) {}
  public void windowClosed     (WindowEvent evt) {}
  public void windowDeactivated(WindowEvent evt) {}
  public void windowDeiconified(WindowEvent evt) {}
  public void windowIconified  (WindowEvent evt) {}
  public void windowClosing    (WindowEvent evt) {dispose();}

    public void keyTyped   (KeyEvent ke){}
    public void keyReleased(KeyEvent ke){}

    public void keyPressed (KeyEvent ke)
    {
        int kc = ke.getKeyCode();

        if(kc == ke.VK_A)
        {
            System.out.println("toets a is aangeslagen");
        }
        else
            System.out.println((char)kc);
    }
}

vertel anders ff hoe het precies in elkaar steekt, welke componenten en classen je gebruikt, en post eventueel cruciale stukken code...

Verwijderd

Topicstarter
Ok, ik heb denk ik java op een ietwat vreemde manier geleerd; bepaalde basisdingen van java ken ik absoluut niet, terwijl ik wel bijna in staat ben mijn eerste spel te maken (dit was het laatste 'echte' obstakel (hoop ik). Nee je ziet het niet te simpel, maar ik heb geen idee wat een frame in java is of dat het er uberhaupt was.

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Hoe heb je nou dan je spel op het scherm laten zien als je niet weet wat een Frame is? als dit via een Applet is gaat het precies op dezelfde manier want dat is ook een component dus daar kan je ook gewoon een Keylistener aanhangen

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Verwijderd

Topicstarter
Ja, via een applet, maar ik weet niet waarom (anderen hebben het ook al voorgesteld) maar:
addKeyListener(this); //(zonder er dus iets voor)
of
this.addKeyListener(this);

werken allebei niet (en ja ik klik eerst op de applet, heel zeker weten), maar ze compilen wel.

Verwijderd

zet boven class:
import java.awt.event.KeyListener;
import java.awt.event.KeyEvent;

zet onder extends:
implements KeyListener

zet onder Spel(){..:
addKeyListener(this);

zet boven het onderste } :
public void keyTyped (KeyEvent ke){}
public void keyReleased(KeyEvent ke){}
public void keyPressed (KeyEvent ke){}


edit:

ow jah, zet alles wat je wilt doen dan in de keyPressed en niet in de keyTyped !

post anders ff je code...
Pagina: 1