java – 模态对话框阻止正确的游标状态

我有同时显示模态对话框和忙碌光标的问题.

我显示一个模态对话框,并将主框架的光标设置为“等待状态”.一切都很好,除了如果鼠标退出主框架并再次进入,它永远不会回到“等待状态”.如果对话框不是模态的,则不会发生此错误(?).

测试程序:

    public static void main(String[] args) {
        final JFrame frame = new JFrame();
        frame.setSize(new Dimension(500, 500));

        final JDialog dialog = new JDialog(frame);
        dialog.setModal(true);

        frame.add(new JButton(new AbstractAction("Dialog") {
            @Override
            public void actionPerformed(ActionEvent e) {
                frame.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
                dialog.setVisible(true);
            }
        }));
        frame.setVisible(true);
    }

最佳答案

frame.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));

>对于有焦点的窗口,光标可能会更改(或更改是可见的),这是模态窗口或ModalityTypes的基本属性,

it never comes back on “waiting state”. This bug (?) doesn’t happen if the dialog is not modal.

>在关闭子JDialog之后,可以将JFrame更改为Cursor到WAIT_CURSOR
>通过删除setModal()或将更改的ModalityTypes更改为ModalityType.MODELESS来显示已更改的Cursor

点赞