首頁 >Java >java教程 >為什麼使用自訂遊標時我的 Java 等待遊標不顯示?

為什麼使用自訂遊標時我的 Java 等待遊標不顯示?

Barbara Streisand
Barbara Streisand原創
2024-11-29 13:07:14378瀏覽

Why Doesn't My Java Wait Cursor Show When Using a Custom Cursor?

Java 等待遊標顯示問題

問題摘要

在Java 應用程式中,等待Java 應用程式當滑鼠懸停在帶有自訂遊標的面板上時,遊標無法正確顯示。當面板不改變遊標時,等待遊標如預期出現。

分析

主要問題源自於等待遊標設定在滑鼠事件起源的元件。在這種情況下,當滑鼠懸停在帶有自訂遊標的面板上時,等待遊標會設置在該面板上,從而被面板的遊標隱藏。

建議的解決方法

為了避免此問題並確保等待遊標正確顯示,建議將等待遊標設置在包含觸發等待狀態的組件的框架的玻璃窗格上。玻璃板是一個透明層,位於框架中所有其他組件的頂部。

實作

修改的 SSCE:

下面修改後的SSCE示範如何透過在螢幕上設定等待遊標來實現修復glasspane:

public class BusyCursorTest extends javax.swing.JFrame {

    // ...

    private 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);
    }

    // ...

}

此方法的優點:

  • 此方法可確保等待遊標在需要時始終可見,無論遊標設定如何框架內的任何元件。
  • 它消除了追蹤哪些面板可能位於最前面或事件是否由以下內容觸發的需要點擊滑鼠。
  • 它提供了一個集中式解決方案,用於修改頂層容器層級的等待遊標行為。

以上是為什麼使用自訂遊標時我的 Java 等待遊標不顯示?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn