パッシブ レンダリング モードで動作している場合、KeyListener インターフェイスと ActionListener インターフェイスを使用して、によって生成されたイベントを管理できます。ユーザー。ただし、アプリケーションが全画面モードに移行すると、イベント処理に対する従来のアプローチが期待どおりに機能しない可能性があります。
この記事では、全画面モードでイベントを処理する正しい方法について説明します。提供されたスケルトン コードを拡張して、コードを簡潔に保ちながら、マウス クリックとキー押下のイベント処理を実装します。
次のコード スケルトンは、フル スクリーンの段階を設定します。排他モードで、タイマーを使用してウィンドウにグラフィックスをレンダリングします:
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(); } }
次のコードは、全画面モードでのマウス クリックとキー押下に対するイベント処理を追加することでスケルトンを拡張します。
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 } }); } }
MouseAdapter クラスは、マウス イベントを処理するために必要なメソッドを提供します。クリックとして。同様に、KeyAdapter クラスはキー押下イベントの処理を簡素化します。
これらのイベント処理機能を利用するには、アプレット クラスをインスタンス化し、その init() メソッドを呼び出します。
このコードは、アプリケーションが全画面排他モードで動作しているときにキーボードとマウスのイベントを効果的に処理する方法を示しています。提供されるソリューションはシンプルで信頼性が高く、全画面環境と互換性があります。
以上がJava の全画面排他モードでキーボードとマウスのイベントを処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。