JAVA wczytywanie z klawiatury nachodzi na przyciski

0

Witam,
Musze zrobic aplikacje z uzyciem biblioteki swing. Jak na razie ogarniam sobie konceptualnie ta biblioteke . Dodam tez ze nie mam doswiadczenia z JAVA (najlepiej znam C++). Moj problem polega na tym , ze chce stworzyc przyciski ktore beda odpowiadac za jakas akcje( nie jest zaprogramowana jeszcze) oraz umozliwic sterowanie strzalkami. Niestety kiedy pisze funkcje

 add(jakis Obiekt)

to w przedstawionym kodzie nie dziala mi obsluga przyciskow. Oto kod

package podsum;
import java.awt.FlowLayout;// zarzdca
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JPanel;

public class Ramka extends JFrame implements KeyListener{

	public Ramka() {
           
            super( "Not Hello World" );
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setSize(800, 800);
		setLocation(0,0);
                
           
                JPanel panel = new Panel(20);

		add(panel);
                
		
		  setLayout(new FlowLayout(FlowLayout.RIGHT, 10, 10)); // zarzadca 
                  
                add(new Przycisk("Przycisk 1"));
		add(new Przycisk("Przycisk 2"));
		add(new Przycisk("Przycisk 3"));
                 addKeyListener(this); // i tutaj gryza sie przyciski z obsluga strzalek
         pack(); // ustawia automatyczne dopasowanie

            
             System.out.println("tgfgft");
	setVisible(true);
          
}
    
    @Override
public void keyPressed(KeyEvent evt) {
         System.out.println("test");
}
    @Override
public void keyTyped(KeyEvent evt) {
         System.out.println("tes");

}
    @Override
public void keyReleased(KeyEvent evt) {
	//char c = evt.getKeyChar();
            //getkeyCode() = VK_RIGHT;
            int key = evt.getKeyCode(); 
            if (key ==  KeyEvent.VK_RIGHT)
                  System.out.println("right");
            else if (key ==  KeyEvent.VK_LEFT)
                  System.out.println("left");
            else if (key ==  KeyEvent.VK_UP)
                  System.out.println("up");
            else if (key ==  KeyEvent.VK_DOWN)
                  System.out.println("down");
            else 
                System.out.println("other");
           /* if (c == 'c'){
                System.out.println("test");
            }*/
            
	/*if(counter < secret.length())
		checkSecret(c);*/
}

}

Dodaje jeszcze mniej istotne klasy
```c
 
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package podsum;

/**
 *
 * @author Adam
 */

import java.awt.*;

import javax.swing.JPanel;

public class Panel extends JPanel {
        private int rozmiar;
	public Panel(int r) {
                this.rozmiar = r;
                
		setPreferredSize(new Dimension(700, 700));
	}

	@Override
        
        
	protected void paintComponent(Graphics g) {
                final int stala = 30;
		super.paintComponent(g );
                
		Graphics2D g2d = (Graphics2D) g;

		// prostokat
              
               Color kolor[] = new Color[3];
               kolor[0] = new Color(255,65,54);
                kolor[1] = new Color(2,67,54);
                 kolor[2] = new Color(85,65,54);
                 Color tmp;
                for (int i=0; i<this.rozmiar; i++){
                    for (int j=0; j<this.rozmiar; j++){
                        tmp = kolor[(i+j)%3];
                        g2d.setColor(tmp);
                        g2d.fillRect(i * stala ,j * stala, stala, stala);
                    }
                }
                String nazwa = "Test";
                for (int i=0; i < kolor.length; i++){
                    
                    tmp = kolor[i];
                        g2d.setColor(tmp);
                        g2d.fillRect(610 ,i * stala, stala, stala);
                    g2d.drawString(nazwa, 650, i*stala+stala);
                }
                
              
		
		
	}
        
       
}

i klasa przycisk

package podsum;

/**
 *
 * @author Adam
 */

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JPanel;

public class Przycisk extends JPanel implements ActionListener{
       
	public static final int HEIGHT = 100;
	public static final int WIDTH = 300;
	private JButton greenButton;
	private JButton blueButton;
	private JButton redButton;

	public Przycisk(String nazwa) { 
		greenButton = new JButton(nazwa);
		

		greenButton.addActionListener(this);
		
		add(greenButton);
		
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		Object source = e.getSource();
                
             
		if(source == greenButton)
                 
                    greenButton.setText("Przycisk 1a") ;
			
		
	}
} 

Glownym problemem jest dla mnie ten moment (kod 1-wszej klasy)

 
add(new Przycisk("Przycisk 1"));
		add(new Przycisk("Przycisk 2"));
		add(new Przycisk("Przycisk 3"));
                 addKeyListener(this); // i tutaj gryza sie przyciski z obsluga strzalek
0

Jak się gryzą? Podaj przykład bo nie wiem co przez to rozumiesz

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