salve a tutti, come da titolo ho questo problema.. implementando il KeyListener e il MouseListener aggiungendoli al frame e inserendo tutti i metodi, non capisco perchè funzionino entrambi, ma il KeyListener mi dice che è stato premuto un pulsante solo dopo che ho cliccato con il mouse sul frame..
senza problemi vi posto il codice:
ovviamente accetto consigli sulla programmazione generale del codice che ho scritto anche se non è riguardante la domanda che ho fatto.. grazie in anticipo..codice:import java.awt.Canvas; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; import java.awt.Toolkit; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.io.IOException; //import javax.media.CannotRealizeException; //import javax.media.NoPlayerException; import javax.swing.JFrame; public class ChooseCharacter extends Canvas implements KeyListener, MouseListener { JFrame f; Image sfondo, p0, p1, p2, p3; int i; ServerConnection s; public ChooseCharacter() { } public ChooseCharacter(JFrame frame) throws IOException/*, NoPlayerException, CannotRealizeException*/ { f = frame; this.addMouseListener(this); this.addKeyListener(this); sfondo = Toolkit.getDefaultToolkit().getImage("sfondo.jpg"); sfondo = sfondo.getScaledInstance(f.getWidth(), f.getHeight(), Image.SCALE_DEFAULT); p0 = Toolkit.getDefaultToolkit().getImage("personaggio1.jpg"); p1 = Toolkit.getDefaultToolkit().getImage("personaggio2.jpg"); p2 = Toolkit.getDefaultToolkit().getImage("personaggio3.jpg"); p3 = Toolkit.getDefaultToolkit().getImage("personaggio4.jpg"); //Main.s = new Sound("SuonoSceltaPersonaggio.mp3"); i = 0; // s = new ServerConnection(); // s.attendi(); } @Override public void paint(Graphics g) { g = (Graphics2D) g; g.drawImage(sfondo, -5, -35, this); if (i == 0) g.drawImage(p0, -5, -35, this); else if (i == 1) g.drawImage(p1, -5, -35, this); else if (i == 2) g.drawImage(p2, -5, -35, this); else if (i == 3) g.drawImage(p3, -5, -35, this); } public void mouseClicked(MouseEvent e) { System.out.print("sono nel mouseclicked"); //Se clicco nel pulsante di scelta personaggio /* if (e.getX()>0 && e.getY()>0) { try { f.removeMouseListener(this); f.remove(this); f.add(new Level1(f, i)); f.validate(); } catch (IOException ex) {} //catch (NoPlayerException ex) {} //catch (CannotRealizeException ex) {} }*/ //Pulsante indietro if (e.getX()>0 && e.getY()>0) { if (i == 0) i = 3; else i--; } //Pulsante avanti if (e.getX()>0 && e.getY()>0) { if (i == 3) i = 0; else i++; } } public void mousePressed(MouseEvent e) { } public void mouseReleased(MouseEvent e) { } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } public void keyTyped(KeyEvent e) { } public void keyPressed(KeyEvent e) { System.out.print("pulsante premuto: "+e.getKeyCode()); //Se ho premuto il pulsante invio allora prendo quel personaggio if (e.getKeyCode() == KeyEvent.VK_ENTER) { try { f.removeMouseListener(this); f.remove(this); f.add(new Level1(f, i)); f.validate(); } catch (IOException ex) {} //catch (NoPlayerException ex) {} //catch (CannotRealizeException ex) {} } //Se premo il pulsante su allora torno indietro con il personaggio if (e.getKeyCode() == KeyEvent.VK_UP) { if (i == 0) i = 3; else i--; } //Se premo il pulsante giù allora torno indietro con il personaggio if (e.getKeyCode() == KeyEvent.VK_UP) { if (i == 3) i = 0; else i++; } repaint(); } public void keyReleased(KeyEvent e) { } }![]()

Rispondi quotando