Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Ohjelman lopetus näppäinpainallusten jälkeen (Java)

timok16 [14.12.2004 13:50:58]

#

moikka!
kuinka saisin ohjelman lopettamaan kun näppikseltä painetaan
merkit 'end'
onko merkit muutettava ensin kokonaisluvuiksi vai kuinka se tulee tehdä?

FooBat [14.12.2004 16:53:31]

#

Jos kyseessä on konsoliohjelma, luet System.in streamistä rivin kerrallaan ja vertailet "end"-merkkijonoon. Tämä onnistuu esim. käyttämällä InputStreamReader ja BufferedReader luokkia.

Jos kyseessä on ikkuna-ohjelma, lisäät ikkunalle KeyListener:in, jossa toteutat keyTyped-metodin. Helpoin tapa on tehdä ikkunasta itsestään KeyListenerin toteuttamalla sen rajapinta "class XXXX extends YYYY implements KeyListener" ja sitten toteuttamalla vaaditut metodit keyPressed, keyReleased ja keyTyped.

public class XXXX extends YYYY implements KeyListener {
 private int counter;
 public XXXX() { //konstructori
   addKeylistener( this );
   counter = 0;
 }

public void keyPressed(KeyEvent e) {}
public void keyReleased(KeyEvent e) {}
public void keyTyped(KeyEvent e) {
  switch(e.getKeyCode()) {
    case KeyEvent.VK_E:
      counter = 1;
      break;
    case KeyEvent.VK_N:
      if (counter == 1) counter++;
      else counter = 0;
      break;
    case KeyEvent.VK_D:
      if (counter == 2) System.exit(0);
    default:
      counter = 0;
  }
}
}

Jotenkin noin. Jos sana, jolla ohjelma lopetetaan on yhtään pidempi, kannattaa painetut merkit puskuroida String muuttujaan ja sitten vertailla

if (taikasana.startsWith(puskuroitu)) ...

ja toimia sen mukaan. KeyEventistä saa painetun kirjaimen getKeyChar metodilla. Javadoc:eista löytyy ihan hyviä ohjeita, jos osaa vähänkin englantia.

timok16 [14.12.2004 19:50:07]

#

kiitos sinulle ja kiitos vielä niillekkin hemmoille jotka minua ovat täällä auttaneet. c++ - kurssistani sain 4, eli aikas hyvin olette patistanut itseopiskeluun ja olen saanut joitain todella hyviä vinkkejä teiltä.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta