Einführung
Wenn eine Java -Anwendung im Vollbildmodus exklusiver Modus ausgeführt wird, funktioniert die übliche Ereignisbehandlung möglicherweise nicht wie erwartet. In diesem Artikel wird der richtige Ansatz zur Handlung von Benutzereingaben von Tastatur und Maus in diesem Modus untersucht.
problem
passiver Rendering -Modus ermöglichen die Verwendung von KeyListener und ActionListener -Schnittstellen, um Benutzereingaben zu verarbeiten. Im exklusiven Vollbildmodus funktionieren diese Methoden jedoch möglicherweise nicht wie beabsichtigt.
lösung
Das folgende Skelett liefert ein überarbeitetes Beispiel, das Ereignisbehandlungen für Mausklicks und Schlüsselpresse im Vollbildmodus implementiert:
Java.applet.applet.aplet.aplet.aplet.aplet.applet.applet.applet.applet.applet.applet.applet. Import Java.awt.Color; importieren java.awt.displaymode; Import Java.awt.Graphics2d; importieren java.awt.graphics configuration; Import Java.awt.GraphicsDevice; Import Java.awt.Graphics -Environment; Import Java.awt.Rectangle; import Java.awt.event.ActionEvent; import Java.awt.event.ActionListener; Import Java.awt.event.KeyEvent; Import Java.awt.event.Mouseadapter; import Java.awt.event.mouseeEvent; Import Java.awt.image.BufferStrategy; importieren javax.swing.jframe; import Javax.swing.timer; Public Class Applet erweitert Applet { Timer -Timer; JFrame Frame; DisplayMode [] displayModes = new displayMode [] { neuer Displaymodes (1280, 800, 32, 60) }; Bufferstrategy Pufferstrategy; Rechteckgrenzen; /** * */ private statische endgültige lange Serialversionuid = 1L; /** * @param args */ public void init () { // ... wie zuvor // ... // Key Event -Hörer registrieren this.getInputMap (). this.getActionMap (). Put ("exit", new AbstractAction () { @Override public void actionperformed (actionEvent e) { // Tastenbearbeitung beenden } }); // Mausereignis Hörer registrieren this.addMousemotionListener (New Mouseadapter () { @Override public void mousemoved (mouseEvent e) { // Mausbewegungshandhabung } }); } // ... wie zuvor // ... }import java.applet.Applet; 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.event.KeyEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.image.BufferStrategy; import javax.swing.JFrame; import javax.swing.Timer; public class applet extends Applet { Timer timer; JFrame frame; DisplayMode[] displayModes = new DisplayMode[] { new DisplayMode(1280, 800, 32, 60) }; BufferStrategy bufferStrategy; Rectangle bounds; /** * */ private static final long serialVersionUID = 1L; /** * @param args */ public void init() { // ... Same as before // ... // Register key event listeners this.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_Q, 0), "EXIT"); this.getActionMap().put("EXIT", new AbstractAction() { @Override public void actionPerformed(ActionEvent e) { // Exit key handling } }); // Register mouse event listeners this.addMouseMotionListener(new MouseAdapter() { @Override public void mouseMoved(MouseEvent e) { // Mouse movement handling } }); } // ... Same as before // ... }Dieses überarbeitete Beispiel stellt sicher, dass Tastatur- und Mausereignisse im exklusiven Vollbildmodus korrekt behandelt werden. IT registriert die wichtigsten Ereignishörer mit GetInputMap und GetActionMap und registriert Mausereignishörer mit AddMousemotionListener.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3