Maison >Java >javaDidacticiel >Pourquoi mon curseur d'attente Java n'apparaît-il pas lorsqu'un panneau définit son propre curseur ?

Pourquoi mon curseur d'attente Java n'apparaît-il pas lorsqu'un panneau définit son propre curseur ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-16 07:00:16894parcourir

Why Doesn't My Java Wait Cursor Appear When a Panel Sets Its Own Cursor?

Problème d'affichage du curseur d'attente Java

Dans cette application Java, le curseur d'attente n'apparaît pas lorsque la souris survole un panneau qui définit son propre curseur. Voici une description du problème :

Problème :

  • Lorsqu'un panneau change de curseur, le curseur d'attente défini sur le conteneur de niveau supérieur n'apparaît pas .

Racine Cause :

  • Le curseur d'attente défini sur le JPanel remplace le curseur d'attente défini sur la vitre du cadre.

Solution :

  • Placez le curseur d'attente sur la vitre du cadre contenant les composants qui souhaitent afficher l'attente curseur.

SSCE modifié :

public class BusyCursorTest extends javax.swing.JFrame {

    private javax.swing.JPanel cursorPanel = null;

    public BusyCursorTest() {
        // ...
        // Set the wait cursor on the glass pane
        startWaitCursor(this);
        // ...
    }

    private static void startWaitCursor(javax.swing.JFrame frame) {
        frame.getGlassPane().setCursor(java.awt.Cursor.getPredefinedCursor(java.awt.Cursor.WAIT_CURSOR));
        // Add mouse listener to glass pane for handling cursor visibility
        frame.getGlassPane().addMouseListener(mouseAdapter);
        frame.getGlassPane().setVisible(true);
    }

    // ...

    private static java.awt.event.MouseAdapter mouseAdapter = new java.awt.event.MouseAdapter() {
    };
}

Notes supplémentaires :

  • Cette solution fonctionne indépendamment de tout panneau et ne nécessite pas de suivi des modifications du curseur dans plusieurs panneaux.
  • Le curseur d'attente est démarré à l'aide d'une minuterie. pour garantir qu'il s'affiche après un délai intentionnel (dans ce cas, 250 ms), ce qui laisse le temps à l'interface utilisateur de devenir réactive.
  • La variable originalCursor est utilisée pour restaurer le curseur d'origine lorsque le curseur d'attente est supprimé.

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