模态对话框阻止正确的光标状态

时间:2012-10-04 09:15:43

标签: java swing cursor modal-dialog jdialog

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

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

测试程序:

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

1 个答案:

答案 0 :(得分:2)

  

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

    对于已获得Cursor的窗口,
  • focus可能会更改(或更改可见),这是模态窗口或ModalityType s的基本属性,
  

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

  • 关闭子JDialog后,JFrame可以更改为CursorWAIT_CURSOR

  • 通过删除Cursor或将setModal()更改为ModalityType

  • ,您可以看到已更改的ModalityType.MODELESS