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を持っているウィンドウの変更が可能です (または変更が表示されます) focus。これは、モーダル ウィンドウまたはModalityTypes の基本的なプロパティです。

「待機状態」に戻ることはありません。ダイアログがモーダルでない場合、このバグ (?) は発生しません。

  • JDialogが閉じられた後、次のJFrameように変更できCursorますWAIT_CURSOR

  • Cursorを削除して変更を表示するsetModal()か、変更ModalityTypeModalityType.MODELESS

于 2012-10-04T09:23:20.180 に答える