Maison > Java > javaDidacticiel > Pourquoi mon curseur d'attente Java Swing ne s'affiche-t-il pas toujours correctement et comment puis-je le réparer à l'aide de la vitre ?

Pourquoi mon curseur d'attente Java Swing ne s'affiche-t-il pas toujours correctement et comment puis-je le réparer à l'aide de la vitre ?

Susan Sarandon
Libérer: 2024-12-03 17:23:10
original
578 Les gens l'ont consulté

Why Does My Java Swing Wait Cursor Not Always Display Correctly, and How Can I Fix It Using the Glass Pane?

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

Dans la bibliothèque Java Swing, la définition du curseur d'un composant ne prend pas toujours effet lorsqu'il y a des panneaux imbriqués avec des curseurs personnalisés. Cela peut entraîner des incohérences dans le comportement du curseur, où le curseur d'attente ne s'affiche pas comme prévu.

Correction : utilisation de la vitre pour le contrôle du curseur

Pour résoudre ce problème, il est recommandé de gérer l'affichage du curseur à l'aide de la vitre du cadre qui contient les composants. La vitre est une vitre transparente qui se situe au niveau supérieur de la hiérarchie du cadre. En plaçant le curseur sur la vitre, n'importe quel composant dans le cadre peut afficher le curseur d'attente quels que soient ses propres paramètres de curseur.

Solution de code modifié :

Ce qui suit le code modifié montre comment utiliser la vitre pour l'affichage du curseur d'attente :

import java.awt.*;
import java.awt.event.*;
import java.util.TimerTask;
import java.util.Timer;

public class BusyCursorTest extends javax.swing.JFrame {

    private javax.swing.JPanel cursorPanel = null;

    public BusyCursorTest() {

        // ...

        public static void startWaitCursor(javax.swing.JFrame frame) {
            frame.getGlassPane().setCursor(java.awt.Cursor.getPredefinedCursor(java.awt.Cursor.WAIT_CURSOR));
            frame.getGlassPane().addMouseListener(mouseAdapter);
            frame.getGlassPane().setVisible(true);
        }

        private static void stopWaitCursor(javax.swing.JFrame frame) {
            frame.getGlassPane().setCursor(originalCursor);
            frame.getGlassPane().removeMouseListener(mouseAdapter);
            frame.getGlassPane().setVisible(false);
        }

        // ...
    }

    // ...

    public static java.awt.Cursor originalCursor = null;

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

    public static final int DELAY_MS = 250;
}
Copier après la connexion

Dans ce code modifié, startWaitCursor() et Les méthodes stopWaitCursor() sont utilisées pour gérer le curseur sur la vitre du cadre. Cela garantit que le curseur d'attente est affiché de manière cohérente quels que soient les paramètres de curseur des composants imbriqués.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal