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()总是返回在 中创建的每个顶级容器(没有容器返回!isDisplayablecurrent JVM,这些容器从未离开JVM memory,也不会GC'ed,因为它们是作为资源来自的Native OS更多在这里

于 2012-06-29T17:12:12.413 回答