Allora per ora ho fatto questo...ma il pannello non si muove
Classe Pannello extends JPanel
(per il movimento ho fatto una cosa rozza giusto per vedere se funziona XD)
codice:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Pannello extends JPanel implements KeyListener {
//coordinate dell'elemento
private static int x;
private static int y;
//costruttore
public Pannello(int a, int b){
super();
Pannello.x = a;
Pannello.y = b;
this.setFocusable(true);
this.requestFocusInWindow();
}
public void paint(Graphics g){
super.paint(g); //richiamo il metodo della classe genitore
Graphics2D g2 = (Graphics2D) g; //cast in Graphics2D di un oggetto Graphcis
g2.setColor(Color.red);
g2.fillRect(x, y, 100, 100);
}
//definisco cosa succede alla pressione di un tasto
public void keyPressed(KeyEvent ke) {
switch(ke.getKeyCode()){
case KeyEvent.VK_UP:
Pannello.y = (Pannello.y) - 1;
repaint();
break;
case KeyEvent.VK_DOWN:
Pannello.y = (Pannello.y) + 1;
repaint();
break;
case KeyEvent.VK_RIGHT:
Pannello.x = (Pannello.x) + 1;
repaint();
break;
case KeyEvent.VK_LEFT:
Pannello.x = (Pannello.x) - 1;
repaint();
break;
}
}
public void keyReleased(KeyEvent arg0) {}
public void keyTyped(KeyEvent arg0) {}
}
Classe Finestra Extends JFrame
codice:
import javax.swing.*;
import java.awt.*;
public class Finestra extends JFrame {
public Finestra(int a, int b){
super();
this.setSize(400,400);
Pannello p = new Pannello(a,b);
this.add(p);
this.addKeyListener(p);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setResizable(false);
}
public static void main (String[] args){
Finestra f = new Finestra(0,0);
}
}
Il problema è che non ho definito una delle due classi "interna" all'altra?
sembra che non "senta" proprio i tasti...