mboost-dp1

JAVA - Keylistener


Gå til bund
Gravatar #1 - tazimn
23. mar. 2009 12:56
Hej derude..

Vi sidder med et program som skal logge af når jeg ikke har brugt det i 5 min..

Vi har en mouseListener på vores frame.. den virker fint..

Derudover har vi en keylistener på samtlige tekstfelter i programmet.. Det løber hurtigt op.. og det er ikke køn kode imo..

Det er ikke muligt at få det til at virke ved at tilføje keylisteneren til framen..

Men er der en smart måde at finde ud af om der bliver tastet et sted i programmet?

Med Venlig Hislen
Kenn Stadager.
Gravatar #2 - arne_v
23. mar. 2009 13:05
MyJTextField extends JTextField og sæt key listener i den og brug den fremfor JTextField var en måde at gøre det på.

Det var naturligvis bedre med en key listener på JFrame, men hvis du siger at det ikke virker, så ...
Gravatar #3 - Windcape
23. mar. 2009 13:08
Problemet med en alm. keylistener er at den kræver din component har focus.

Så løsningen er at implementere et KeyMap


public class MyInputMap extends InputMap
{
@Override
public Object get(KeyStroke s)
{
if(s.getKeyEventType() == KeyEvent.KEY_PRESSED)
{
try
{
switch(s.getKeyCode())
{
case KeyEvent.VK_RIGHT:
System.out.println("Du trykkede på højre piletast.")
break;
}
}
catch(IOException ex)
{
ex.printStackTrace();
}
}

return super.get(s);
}
}



Som så attaches din JFrame (dvs. din Window Container)


public class MyForm extends JFrame
{
public MyForm()
{
MyInputMap inputMap = new MyInputMap();

inputMap.setParent(getRootPane().getInputMap(
JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT
));
this.getRootPane().setInputMap(
JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT,
inputMap
);
}
}
Gravatar #4 - tazimn
23. mar. 2009 13:20
Tak for hjælpen begge to..

Windscape's metode er lige i skabet..
Dog ligger det en del uden for pensum, så skal lige tages op med underviseren inden vi bruger det..
Gravatar #5 - Windcape
23. mar. 2009 13:37
tazimn (4) skrev:
Dog ligger det en del uden for pensum, så skal lige tages op med underviseren inden vi bruger det..
Kun fordi at han ellers regner med at du har kopieret koden fra et internet forum, og ikke forstår hvad den gør ;-)

Du skal selvfølgelig læse op på det i Java docs, og forstå koden 110%, samt dokumentere den i dit projekt.

Hvis du gør det, så tror jeg ikke du behøver snakke med din lære omkring det.
Gravatar #6 - tazimn
23. mar. 2009 16:30
Jeg forstår koden, men den giver måske anledning til spørgsmål fra censor, som vi ikke er helt up-to-date med..

Og det gider jeg sgu ikke ind i... så hellere have det som kommentar at det var en mulighed, men at vi ikke kunne få det til at virke..
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login