ホームページ >Java >&#&チュートリアル >Java の全画面排他モードでキーボードとマウスのイベントを処理するにはどうすればよいですか?

Java の全画面排他モードでキーボードとマウスのイベントを処理するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-19 12:04:101014ブラウズ

How to Handle Keyboard and Mouse Events in Java's Full-Screen Exclusive Mode?

Java の全画面排他モードでのキーボード イベントとマウス イベントの処理

パッシブ レンダリング モードで動作している場合、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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。