problem ze sluchaczem klawiszy

0

rzeczowe fragmenty kodu :


public class Panel_Główny extends JPanel
{
   public Panel_Główny()
   {
	...
	Obsługa_Klawiszy słuchacz_klawiszy = new Obsługa_Klawiszy();
	addKeyListener(słuchacz_klawiszy);
	requestFocus();
        ...
   }
  
}

----------------------------------------------------------------------------------------

import java.util.*;
import java.awt.*;
import java.awt.event.*;

public class Obsługa_Klawiszy implements KeyListener
{
  
  public void keyPressed(KeyEvent zdarzenie)
  {
    kod_klawisza = zdarzenie.getKeyCode();
    if (kod_klawisza == KeyEvent.VK_0) System.exit(0);
	  
  }
	
  public void keyReleased(KeyEvent zdarzenie)
  {
		  
  }
  
  public void keyTyped(KeyEvent zdarzenie)
  {
	  
	  
  }
  int kod_klawisza;	
 
}

Problem jest prosty, aplikacja ma byc zamykana poprzez nacisniecie klawisza 0, tak sie niestety nie dzieje, gdzie lezy problem ?

z gory dziekuje

0

Sprawdz czy metoda keyPressed w ogole sie wywoluje. Jesli nie, to znaczy, ze okienko samo w sobie nie ma 'focusa', a np. jakis jego komponent. Dzieje sie tak na przyklad wtedy, kiedy masz jakies przyciski. Wtedy jeden z nich standardowo dostaje focusa.

pozdrawiam
johny

0

metoda keypressed nie wywołuje sie, dla sprawdzenia wstawiłem println, nie mam żadnych innych komponentow (wstawiam tylko obrazek do panelu)

0

Nie wiem czy sie da, ale sprobuj w takim razie wszystkim mozliwym komponentom (panelowi, obrazkowi) przypisac ten sluchacz. Nie pamietam z jakiego powodu, ale jezeli na formatce jest jakis komponent zdolny odbieraz zdarzenia klawiatury, to domyslnie ktorys z nich to robi - nie formatka. Byc moze panel moze?

Jak nie, to daj troche wiecej koda - w szczegolnosci tego, z wstawianymi elementami - i zobacze u siebie.

pozdrawiam
johny

0

przypisalem obiekt JFrame i metoda keyPressed nie wiadomo dlaczego zaczela sie wywolywac, zmienilem troche kod klasy obsluga_klawiszy :

public void keyPressed(KeyEvent zdarzenie)
{
kod_klawisza = zdarzenie.getKeyCode();
if (kod_klawisza == KeyEvent.VK_SPACE) System.exit(0);
System.out.println(kod_klawisza);

}

po nacisnieciu 0 zwraca 2 wyniki : 48 i 18

0
konieczny napisał(a)

przypisalem obiekt JFrame i metoda keyPressed nie wiadomo dlaczego zaczela sie wywolywac

Heh, nie wiedziec czemu, nie zauwazylem, ze przypisujesz to wczesniej do panelu. To wiele wyjasnia - okienko (czyli JFrame) powinno nasluchiwac klawiatury. O ile wiem panel nie dostaje w ogole focusa, zeby miec szanse nasluchiwac.

konieczny napisał(a)

po nacisnieciu 0 zwraca 2 wyniki : 48 i 18

Ze 48 to oczywiste, ale 18? Na googlu pisza, ze to jakies Device Control 2, ale nie mam pojecia co oznacza...

pozdrawiam
johny

1 użytkowników online, w tym zalogowanych: 0, gości: 1