【问题标题】:Modal dialog prevents correct cursor state模态对话框阻止正确的光标状态
【发布时间】:2012-10-04 09:15:43
【问题描述】:

我在同时显示模式对话框和忙碌光标时遇到问题。

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

测试程序:

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

【问题讨论】:

    标签: java swing cursor modal-dialog jdialog


    【解决方案1】:

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

    • Cursor 可以更改(或更改可见)具有focus 的窗口,这是模态窗口或ModalityTypes 的基本属性,

    它永远不会回到“等待状态”。如果对话框不是模态的,则不会发生此错误 (?)。

    • 在子JDialog 关闭后,JFrame 可以将Cursor 更改为WAIT_CURSOR

    • 您可以通过删除 setModal() 或将 ModalityTypes 更改为 ModalityType.MODELESS 来看到更改后的 Cursor

    【讨论】:

    • 好的,谢谢,我不知道!问题是我想在模态对话框中添加一个进度条并使光标在整个应用程序中等待,直到对话框消失。我怎样才能做到这一点?
    • @paranoia25 有(移动逻辑)更改弹出窗口的光标(在你的情况下为 JDialog),让它 JFrame .... :-),could be hard job for newbee, possible lack on EDT,在这个论坛上搜索 SwingWorker 和JProgressBar, ... 每天回答类似的问题
    猜你喜欢
    • 1970-01-01
    • 2013-12-01
    • 1970-01-01
    • 2021-04-14
    • 2012-08-31
    • 1970-01-01
    • 1970-01-01
    • 2012-02-19
    • 1970-01-01
    相关资源
    最近更新 更多