не могли бы вы опубликовать еще немного кода (и оставить в стороне обработку имени файла?) О том, как вы создаете JFrame и JFileChooser? Я думаю, что вы избавляетесь от JFrame (как скрыть его от глаз), но не уничтожаете его.
Таким образом, JButton с его ActionListener все еще жив (но просто не показан), и во втором запуске вы добавляете в него еще один ActionListener, поэтому, конечно, создается второй JFileChooser.
edit: некоторый код, объясняющий, что я имею в виду
JFrame myFrame = new JFrame();
JButton someButton = new JButton();
void addActionListenerToButton() {
someButton.addActionListener(new ActionListener() {
new JFileChooser().showOpenDialog(null);
});
}
void handler() {
myFrame.add(someButton);
addActionListerToButton();
myFrame.show();
someButton.click(); // that method does not exist, it is meant as the user clicks.
myFrame.dispose();
}
void main() {
handler(); // thats the first run where one JFileChooser is seen
handler(); // thats the second one, now you have two JFileChoosers.
}