2012-10-22 4 views
1

J'essaie d'écrire une application en plein écran qui prend des entrées au clavier. J'ai essayé d'ajouter des keylisteners à mon JFrame et maintenant à un canevas dans le JFrame et de les mettre tous deux en focus, mais ça ne semble rien enregistrer du tout. Y at-il quelque chose de spécial que j'ai à faire en mode plein écran pour l'enregistrer dans keyEvents? Toute aide grandement appréciée. (Affichage est juste une extension de JFrame sans changement encore)Java Mode plein écran graphique ne pas enregistrer entrée clavier

public class chanceCore implements Runnable, KeyListener, MouseListener { 

boolean isRunning = true; 
display frame; 
Canvas canvas; 
GraphicsDevice device; 
GraphicsEnvironment environment; 

public chanceCore() { 
    setUp(); 
    run(); 
} 

public void setUp() { 
    frame = new display("CGE"); 
    canvas = new Canvas(); 
    frame.getContentPane().add(canvas); 
    frame.setUndecorated(true); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    canvas.addKeyListener(this); 
    canvas.addMouseListener(this); 
    canvas.setFocusable(true); 
    frame.setVisible(true); 
    environment = GraphicsEnvironment.getLocalGraphicsEnvironment(); 
    device = environment.getDefaultScreenDevice(); 
    device.setFullScreenWindow(frame); 

} 

@Override 
public void run() { 
    while (isRunning) { 
     draw(canvas.getGraphics()); 
     try { 
      Thread.sleep(200); 
     } catch (Exception ex) { 
      ex.printStackTrace(); 
     } 
    } 
} 

public void draw(Graphics g) { 
    g.setColor(Color.BLUE); 
    g.fillRect(0, 0, frame.getWidth(), frame.getHeight()); 
} 

@Override 
public void keyPressed(KeyEvent e) { 
    System.out.println(e.getKeyCode()); 
} 
+0

Peut-être que cela peut vous aider. http://stackoverflow.com/questions/5344823/how-can-i-listen-for-key-presses-within-java-swing-accross-all-components? – r0ast3d

+0

Je n'arrive pas à le faire fonctionner. Comment pourrais-je l'adapter à cet exemple ici? –

Répondre

1

Essayez ce code. Après avoir appelé setFullScreenMode(), ajoutez simplement ces deux lignes. Lorsque nous entrons en plein écran quelque chose ne va pas,

frame.setVisible(false); 
frame.setVisible(true); 
+0

Cela a fonctionné pour moi, merci. –

Questions connexes