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)
Classe Finestra Extends JFramecodice: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) {} }
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...
![]()

sembra che non "senta" proprio i tasti...
Rispondi quotando