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中文网其他相关文章!