4

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

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

测试程序:

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

1 回答 1

2

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

  • Cursor有可能改变(或改变是可见的)窗口,这是模态窗口或s 的focus基本属性,ModalityType

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

  • 孩子JDialog关闭后,JFrame可以Cursor改为WAIT_CURSOR

  • Cursor您可以通过删除setModal()或将更改ModalityTypes更改为可见更改ModalityType.MODELESS

于 2012-10-04T09:23:20.180 回答