Lorsque vous travaillez en mode de rendu passif, les interfaces KeyListener et ActionListener peuvent être utilisées pour gérer les événements générés par l'utilisateur. Mais lorsque l'application passe en mode plein écran, l'approche traditionnelle de la gestion des événements peut ne pas fonctionner comme prévu.
Cet article explique la méthode correcte pour gérer les événements en mode plein écran. Il étend le code squelette fourni pour implémenter la gestion des événements de clic de souris et d'appui sur une touche tout en garantissant que le code reste concis.
Le squelette de code suivant prépare le terrain pour le plein écran mode exclusif et restitue les graphiques dans une fenêtre à l'aide d'une minuterie :
import java.awt.Color; import java.awt.DisplayMode; import java.awt.Graphics2D; import java.awt.GraphicsConfiguration; import java.awt.GraphicsDevice; import java.awt.GraphicsEnvironment; import java.awt.Rectangle; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.image.BufferStrategy; import javax.swing.JFrame; import javax.swing.Timer; public class Applet { Timer timer; JFrame frame; DisplayMode[] displayModes = new DisplayMode[] { new DisplayMode(1280, 800, 32, 60) }; BufferStrategy bufferStrategy; Rectangle bounds; public void init() { GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment(); GraphicsDevice device = env.getDefaultScreenDevice(); setIgnoreRepaint(true); GraphicsConfiguration gc = device.getDefaultConfiguration(); frame = new JFrame(gc); device.setFullScreenWindow(frame); if (device.isDisplayChangeSupported()) device.setDisplayMode(displayModes[0]); frame.createBufferStrategy(2); bufferStrategy = frame.getBufferStrategy(); timer = new Timer(1000 / 50, new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { Graphics2D g = null; try { g = (Graphics2D) bufferStrategy.getDrawGraphics(); render(g); } finally { g.dispose(); } bufferStrategy.show(); } }); } private void render(Graphics2D g) { g.setColor(Color.BLACK); g.fillRect(0, 0, bounds.width, bounds.height); } public void start() { timer.start(); } public void stop() { timer.stop(); } }
Ce qui suit le code étend le squelette en ajoutant la gestion des événements pour les clics de souris et les pressions sur les touches en mode plein écran :
import java.awt.event.KeyEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; class Applet extends Applet { @Override public void init() { super.init(); this.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { // Handle mouse click event } }); this.addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { // Handle key press event } }); } }
La classe MouseAdapter fournit les méthodes nécessaires pour gérer les événements de souris, tels que les clics. De même, la classe KeyAdapter simplifie la gestion des événements de pression sur les touches.
Pour utiliser ces capacités de gestion d'événements, instanciez la classe Applet et appelez sa méthode init().
Ce code montre comment gérer efficacement les événements du clavier et de la souris lorsque l'application fonctionne en mode exclusif plein écran. La solution fournie est simple, fiable et compatible avec l'environnement plein écran.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!