Java等待游标显示问题

Java等待游标显示问题

在应用程序中显示等待游标时出现问题。每当鼠标位于定义自己游标的面板上方时,等待游标就不会出现。如果面板不更改游标,则会出现等待游标。

我正在附上一个SSCE,以准确地解释我的问题。

public class BusyCursorTest extends javax.swing.JFrame {public BusyCursorTest() {

    javax.swing.JMenuBar menuBar = new javax.swing.JMenuBar();
    javax.swing.JMenu menu = new javax.swing.JMenu("Menu");
    javax.swing.JMenuItem wait1 = new javax.swing.JMenuItem("Wait 100 ms");
    javax.swing.JMenuItem wait2 = new javax.swing.JMenuItem("Wait 250 ms");
    javax.swing.JMenuItem wait3 = new javax.swing.JMenuItem("Wait 500 ms");
    javax.swing.JMenuItem wait4 = new javax.swing.JMenuItem("Wait 1000 ms");
    menu.add(wait1);
    menu.add(wait2);
    menu.add(wait3);
    menu.add(wait4);
    menuBar.add(menu);
    setJMenuBar(menuBar);
    wait1.addActionListener(getActionListener(this, delayActionListener(100)));
    wait2.addActionListener(getActionListener(this, delayActionListener(250)));
    wait3.addActionListener(getActionListener(this, delayActionListener(500)));
    wait4.addActionListener(getActionListener(this, delayActionListener(1000)));

    cursorPanel = new javax.swing.JPanel();
    cursorPanel.addMouseListener(new java.awt.event.MouseAdapter() {
      
    });
        public void actionPerformed(java.awt.event.ActionEvent ae) {
            try {
                Thread.sleep(delay);
            } catch (InterruptedException e) {
            }
        }

    };
    
           
    return actionListener;}private javax.swing.JPanel cursorPanel = null;public static java.awt.Cursor originalCursor = null;
    public static final int DELAY_MS = 250;}

运行附加的SSCE。

当选择第一个选项卡(“默认”)时,单击1000 ms菜单项将显示繁忙的光标。

当选择第二个选项卡(“游标更改”)时,单击1000 ms菜单项不会显示繁忙的游标。

我该如何解决这个问题?

我强烈希望我的代码不需要考虑到任何一个面板,因为这对我来说是非常困难的,因为我很难跟踪哪些面板可能处于最前沿。此外,由于鼠标单击,事件并不总是生成。

建议的解决方法是什么,以便我可以在顶级容器中修改行为?


LEATH
浏览 422回答 3
3回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java