Maison >Java >javaDidacticiel >Comment gérer efficacement les événements du clavier et de la souris en mode exclusif plein écran de Java ?

Comment gérer efficacement les événements du clavier et de la souris en mode exclusif plein écran de Java ?

DDD
DDDoriginal
2024-12-20 00:49:08320parcourir

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

Gestion des événements de clavier et de souris en mode exclusif plein écran avec Java

En mode de rendu passif, les événements de l'utilisateur peuvent être gérés à l'aide des interfaces KeyListener et ActionListener. Cependant, lors de l'utilisation du mode plein écran, une approche différente est nécessaire.

Pour gérer les événements en mode plein écran tout en garantissant un rendu efficace, vous pouvez mettre en œuvre les étapes suivantes :

Exemple de test plein écran

Considérez la classe FullScreenTest suivante, qui fournit un exemple de la façon de gérer les événements en mode plein écran :

public class FullScreenTest extends JPanel {

    // Set up a JFrame for full screen exclusive mode
    private JFrame f = new JFrame("FullScreenTest");

    // Initialize an exit action and add it to the JFrame's root pane
    private Action exit = new AbstractAction(EXIT) {
        @Override
        public void actionPerformed(ActionEvent e) {
            // Close the JFrame when the exit action is triggered
            f.dispatchEvent(new WindowEvent(f, WindowEvent.WINDOW_CLOSING));
        }
    };

    private JButton b = new JButton(exit);
    
    // Create a FullScreenTest instance and add it to the JFrame
    public FullScreenTest() {
        // Add a button to the JPanel and set it as the default button for the JFrame
        this.add(b);
        f.getRootPane().setDefaultButton(b);
    
        // Register a KeyStroke for the exit action (in this case, the 'Q' key)
        this.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_Q, 0), EXIT);
    
        // Associate the exit action with the EXIT key
        this.getActionMap().put(EXIT, exit);
        
        // Add a MouseAdapter to handle mouse movement and display tooltips
        this.addMouseMotionListener(new MouseAdapter() {
            @Override
            public void mouseMoved(MouseEvent e) {
                FullScreenTest.this.setToolTipText(
                    "("+ e.getX() + "," + e.getY() + ")");
            }
        });
    }
    
    // Display the JFrame in full screen exclusive mode
    private void display() {
        GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
        GraphicsDevice dev = env.getDefaultScreenDevice();
        
        // Configure the JFrame for full screen mode
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setBackground(Color.darkGray);
        f.setResizable(false);
        f.setUndecorated(true);
        f.add(this);
        f.pack();
        
        // Set the JFrame to be the full screen window
        dev.setFullScreenWindow(f);
    }
    
   // Create a main method and run the application in the EventQueue
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
        @Override
        public void run() {
            new FullScreenTest().display();
            }
        });
    }
}

Dans cet exemple :

  • Nous créons un JFrame et le configurons pour le mode exclusif plein écran.
  • Nous utilisons KeyListener et un InputMap pour gérer les événements clés en mode plein écran.
  • Nous utilisons MouseListener et un MouseAdapter pour gérer les mouvements de la souris et afficher les info-bulles en mode plein écran.
  • Nous utilisons le fonctionnalités de bouton par défaut de JFrame pour fournir à l'utilisateur un moyen simple de quitter le mode plein écran.

En utilisant cette approche, vous pouvez gérer efficacement les événements du clavier et de la souris en mode plein écran tout en conservant une performances pour votre rendu graphique.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn