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);
}
誰かが何が起こっているのか説明できますか?