概要
全画面排他モードで Java アプリケーションを実行する場合モードでは、通常のイベント処理メカニズムが期待どおりに動作しない可能性があります。この記事では、このモードでキーボードとマウスからのユーザー入力を処理するための正しいアプローチについて説明します。
問題
パッシブ レンダリング モードでは、KeyListener インターフェイスと ActionListener インターフェイスを使用して処理できます。ユーザー入力。ただし、全画面排他モードでは、これらのメソッドは意図したとおりに機能しない可能性があります。
解決策
次のスケルトンは、マウス クリックとイベント処理を実装する改訂された例を提供します。全画面モードでのキー押下:
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 // ... }
この改訂された例では、全画面排他モードでキーボードとマウスのイベントが正しく処理されるようになります。 getInputMap と getActionMap を使用してキー イベント リスナーを登録し、addMouseMotionListener を使用してマウス イベント リスナーを登録します。
以上がJava の全画面排他モードでユーザー入力を処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。