Heim > Java > javaLernprogramm > Warum wird mein Java-Wartecursor nicht angezeigt, wenn ein Panel seinen eigenen Cursor setzt?

Warum wird mein Java-Wartecursor nicht angezeigt, wenn ein Panel seinen eigenen Cursor setzt?

Linda Hamilton
Freigeben: 2024-12-16 07:00:16
Original
889 Leute haben es durchsucht

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

Problem mit der Anzeige des Java-Wartecursors

In dieser Java-Anwendung wird der Wartecursor nicht angezeigt, wenn die Maus über ein Panel schwebt, das ihn definiert eigener Cursor. Hier ist eine Aufschlüsselung des Problems:

Problem:

  • Wenn ein Panel seinen Cursor ändert, wird der im Container der obersten Ebene festgelegte Wartecursor nicht angezeigt .

Grundursache:

  • Das Warten Der auf dem JPanel gesetzte Cursor überschreibt den auf der Glasscheibe des Rahmens gesetzten Wartecursor.

Lösung:

  • Setzen Sie den Wartecursor auf die Glasscheibe des Rahmens, der die Komponenten enthält, die den Wartecursor anzeigen möchten.

Geändert SSCE:

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() {
    };
}
Nach dem Login kopieren

Zusätzliche Hinweise:

  • Diese Lösung funktioniert unabhängig von allen Panels und erfordert keine Verfolgung von Cursoränderungen in mehreren Panels.
  • Der Wartecursor wird mithilfe eines Timers gestartet, um sicherzustellen, dass er nach einer absichtlichen Verzögerung (in diesem Fall 250 ms) angezeigt wird, um Zeit für den zu geben Benutzeroberfläche soll reagieren.
  • Die Variable originalCursor wird verwendet, um den ursprünglichen Cursor wiederherzustellen, wenn der Wartecursor entfernt wird.

Das obige ist der detaillierte Inhalt vonWarum wird mein Java-Wartecursor nicht angezeigt, wenn ein Panel seinen eigenen Cursor setzt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage