When operating in passive rendering mode, the KeyListener and ActionListener interfaces can be used to manage events generated by the user. But when the application transitions to full screen mode, the traditional approach to event handling may not work as expected.
This article explains the correct method for handling events in full screen mode. It extends the provided skeleton code to implement mouse click and key press event handling while ensuring the code remains concise.
The following code skeleton sets the stage for full screen exclusive mode and renders graphics in a window using a Timer:
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(); } }
The following code extends the skeleton by adding event handling for mouse clicks and key presses in full screen mode:
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 } }); } }
The MouseAdapter class provides the necessary methods for handling mouse events, such as clicks. Similarly, the KeyAdapter class simplifies handling of key press events.
To utilize these event handling capabilities, instantiate the Applet class and call its init() method.
This code demonstrates how to effectively handle keyboard and mouse events while the application is operating in full screen exclusive mode. The provided solution is simple, reliable, and compatible with the full screen environment.
The above is the detailed content of How to Handle Keyboard and Mouse Events in Java's Full-Screen Exclusive Mode?. For more information, please follow other related articles on the PHP Chinese website!