2

JOptionPane.showInputDialog(...) メソッド (および JJOptionPane の他のメソッド) で奇妙な動作が発生します。作成されたダイアログは決して死ぬようには見えません。ダイアログが消えた後に Window.getWindows() を呼び出すと、ウィンドウの数が増えました!

このプログラムをテストすると、私の言いたいことがわかります。

public static void main(String[] args) {
        final JFrame frame = new JFrame();
        final JPanel panel = new JPanel();
        final JButton button = new JButton("Show Dialog");
        panel.add(button);
        frame.add(panel);
        button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent ae) {
                JOptionPane.showInputDialog(frame, "Enter some text : ");
                System.out.println(Window.getWindows().length);
            }
        });
        frame.setSize(400, 400);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
}

誰かが何が起こっているのか説明できますか?

4

1 に答える 1

4

誰かが何が起こるか理解していますか?

Window.getWindows()で作成されたすべてのトップレベル コンテナを常に返します(コンテナはを返しません!isDisplayable) 。current JVMJVM memoryGC'edNative OS

于 2012-06-29T17:12:12.413 に答える