witam
mam ramkę JFrame w której jest JPanel, klasa która dziedziczy po JPanel jest kontrolerem, na tym JPanelu ma się znajdować kilka rzeczy, chciałbym aby klawiatura była przechwytywana wlaśnie przez JPanel na skutek tego że ta klasa ma być kontrolerem
zauważyłem że jeśli JPanel jest pusty to przechwytuje wszystkie zdarzenia, jeśli wstawię tam choćby przycisk to nie przechwytuję żadnego...
Chciałbym się dowiedzieć co powinienem zrobić aby JPanel z zawartością przechwytywał zdarzenia
nie bardzo wiem w jakich znacznikach powinienem wstawić kod javy... dlatego wstawiłem w code, jakby co proszę mnie poprawić
import javax.swing.*;
import java.awt.event.*;
/**
*
* @author zimi
*/
class Dodaj implements KeyListener
{
public void actionPerformed(ActionEvent e)
{
Przycisk.ramka.getContentPane().add(new JLabel("a"));
Przycisk.ramka.getContentPane().validate();
}
public void keyReleased(KeyEvent e)
{
Przycisk.ramka.getContentPane().add(new JLabel("b"));
Przycisk.ramka.getContentPane().validate();
}
public void keyPressed(KeyEvent e)
{
Przycisk.ramka.getContentPane().add(new JLabel("a"));
Przycisk.ramka.getContentPane().validate();
}
public void keyTyped(KeyEvent e)
{
Przycisk.ramka.getContentPane().add(new JLabel("c"));
Przycisk.ramka.getContentPane().validate();
}
}
public class Przycisk extends JFrame{
public static void main(String args[])
{
ramka = new Przycisk();
ramka.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ramka.getContentPane().setLayout(new BoxLayout(ramka.getContentPane(), BoxLayout.Y_AXIS));
ramka.setSize(200, 500);
ramka.addKeyListener(new Dodaj());
// wystarczy odkomentować 2 poniższe linijki i JPanel nie będzie przechwytywał zdarzeń
//JButton przycisk = new JButton("przycisk");
//ramka.getContentPane().add(przycisk);
ramka.requestFocusInWindow();
ramka.setVisible(true);
}
public static Przycisk ramka;
}
</php>