KeyListener - jak wywołać nasłuchiwanie klawiatury?

0

Cześć. Wiem, że istniały już podobne tematy, ale nie udało mi się wypracować rozwiązania. Dotychczas największe doświadczenie miałem w C i przechodzę przez ten ciężki okres przestawiania się na programowanie obiektowe, tak więc proszę wybaczyć wszelkie głupoty z mojej strony ;) Mianowicie: Co jest nie tak z konstruktorem i co mam zrobić (umieścić w mainie?) by program nasłuchiwał klawiaturę i zachowywał się zgodnie z tym co zawiera keyPressed()?

package keytest;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

public class keytest implements KeyListener
{

    public keytest()
    {
        addKeyListener(this);
    }
    
    public static void main (String argv[])
    {
        while(true)
        {
            /*Co tutaj?*/
        }
    }

    
    @Override
    public void keyPressed(KeyEvent e)
    {
        // TODO Auto-generated method stub
        if (e.getKeyCode()==KeyEvent.VK_Q)
        {
            System.out.println("Q pressed");
        }
        else System.out.println("Q not pressed");
    }

    @Override
    public void keyReleased(KeyEvent e)
    {
        // TODO Auto-generated method stub
        
    }

    @Override
    public void keyTyped(KeyEvent e) {
        // TODO Auto-generated method stub
        
    }
}

0

Dawno nie pisałem w javie i nie pamiętam już tego, ale w mainie chyba po prostu musisz stworzyć nowy obiekt i powinno działać.

Po wpisaniu w google coś takiego znalazłem: http://javastart.pl/grafika_awt_swing/obsluga-zdarzen-klawiatura/

1

Z tego co wiem nie da się tego zrobic konsolowo(jeżeli juz chcesz to chyba musisz użyć InputStreamReader)
Normalnie robi się to na obiektach, np:

package keytest;

import javax.swing.JFrame;

public class Ramka extends JFrame{
	public Ramka(){
		setSize(300,300);
		setVisible(true);
	}
	public static void main(String[] args){
		Ramka ramka=new Ramka();
		keytest sluchacz=new keytest();
		ramka.addKeyListener(sluchacz);
	}
}

i twoja klasa keytest tyle że bez konstruktora i maina

public class keytest implements KeyListener
{

    public void keyPressed(KeyEvent e)
    {
        // TODO Auto-generated method stub
        if (e.getKeyCode()==KeyEvent.VK_Q)
        {
            System.out.println("Q pressed");
        }
        else System.out.println("Q not pressed");
    }
 
    @Override
    public void keyReleased(KeyEvent e)
    {
        // TODO Auto-generated method stub
 
    }
 
    @Override
    public void keyTyped(KeyEvent e) {
        // TODO Auto-generated method stub
 
    }
}

Do obiektu (w tym przypadku ramki) przypisujesz obiekt który będzie nasłuchiwał zdarzenia z klawiatury(sluchacz). W momencie naciśnięcia klawisza q wywołana jest metoda keyTyped() obiektu który nasłuchuje zdarzenia

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