Avatar billede martinbk Nybegynder
17. november 2004 - 06:54 Der er 3 kommentarer og
1 løsning

StackOverflow med keyListener

Hejsa, jeg har et mærkværdigt problem som jeg ikke umiddelbart kan se grunden til:

private JTextField getTextNavn() {
  textNavn.addKeyListener(new KeyListener() {
    public void keyPressed(KeyEvent e) {}
    public void keyReleased(KeyEvent e) {}
    public void keyTyped(KeyEvent e) {
      textNavn_keyTyped();
    }
  });
  return textNavn;
}

private void textNavn_keyTyped() {
  if(getTextNavn().getText().length() > 0 && getListe().isSelectionEmpty()) {
    opdaterKnapper(true, false, false);
  }
  else if(getTextNavn().getText().length() > 0 && !getListe().isSelectionEmpty()) {
    opdaterKnapper(false, true, true);
  }
  else if (getTextNavn().getText().length() == 0) {
    opdaterKnapper(false, false, false);
  }
}

private void opdaterKnapper(boolean opret, boolean rediger, boolean slet) {
  getOpretKnap().setEnabled(opret);
  getRedigerKnap().setEnabled(rediger);
  getSletKnap().setEnabled(slet);       
}

ovenstående giver mig en StackOverflow og 100% CPU usage, kommenterer jeg min textNavn_keyTyped() metode ud kan jeg skrive lige så tosset jeg vil i feltet, men det er jo ikke meningen, håber nogen kan se mit problem.

Martin
Avatar billede arne_v Ekspert
17. november 2004 - 07:49 #1
Mit gæt vil være at du trykker en tast, key listener kaldes, key listener
for på en aller anden måde gjordt noget som aktiverer key listener igen
og så går den i uendelig rekursion.

Men jeg kan godt nok ikke lige gennemskue hvorfor textNavn_keyTyped skulle
gøre det.
Avatar billede jpvj Nybegynder
17. november 2004 - 08:37 #2
Mit forslag...

Brug en debugger ellers skriv noget debug information ud - så kan du se hvad der sker.
Avatar billede martinbk Nybegynder
17. november 2004 - 10:53 #3
arne's forslag var ganske korrekt, jeg har benyttet Eclipse's Visual Desigener, og den har det med at oprette metoder for hver eneste component, dermed får jeg rekursive kald fordi en metode der skal tegne knapperne sørger for metoderne bliver kaldt igen... man må jo sige folkene bag den designer skal lidt på arbejde.

men arne smid et svar, du har endnu en gang fortjent dine point.
Avatar billede arne_v Ekspert
17. november 2004 - 11:39 #4
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester