JFileChooser不想关闭

时间:2012-11-16 13:10:21

标签: java swing jbutton actionlistener jfilechooser

我正在使用JFileChooser,我按下关闭按钮后不想关闭。问题是,在我按下关闭按钮后,它再次打开3次以上,最后关闭。

我的代码:

javaButton.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
     JFileChooser fileChooser = new JFileChooser();
     fileChooser.setDialogTitle("Save");

     int option = fileChooser.showSaveDialog(null);
     if (option == JFileChooser.APPROVE_OPTION) {
         String filename = fileChooser.getFileFilter().getDescription();
            try {
                ChartUtilities.saveChartAsPNG(new File(filename), chart, getWidth(), getHeight());
                } catch (java.io.IOException exc) {
                System.err.println("Error writing image to file"); 
                }
     }
     if (option == JFileChooser.CANCEL_OPTION) {
                 System.out.println("Task canceled!");
                 //tried: fileChooser.setVisible(false); // >> same problem

     }
   }
});

有什么建议吗?

3 个答案:

答案 0 :(得分:2)

如果选择有效,您在JFileChooser中选择的任何选项都会关闭对话框。

但请注意,if (option == JFileChooser.CANCEL_OPTION)下的代码永远不会执行,因为您已经在评估option == JFileChooser.APPROVE_OPTIONtrue的分支内。

答案 1 :(得分:0)

我的建议是指定JFileChooser的父级而不是将其设置为null。那个对话的父母是什么?它是JFrame吗?

看看这个简单的例子,我相信它会对你有用。

http://docs.oracle.com/javase/tutorial/uiswing/components/filechooser.html

答案 2 :(得分:0)

试试这个:

javaButton.addActionListener(new ActionListener() {
               public void actionPerformed(ActionEvent e) {
                 JFileChooser fileChooser = new JFileChooser();
                 fileChooser.setDialogTitle("Save");

                 int option = fileChooser.showSaveDialog(null);
                 if (option == JFileChooser.APPROVE_OPTION) {
                     String filename = fileChooser.getFileFilter().getDescription();
                        try {
                            ChartUtilities.saveChartAsPNG(new File(filename), chart, getWidth(), getHeight());
                            } catch (java.io.IOException exc) {
                            System.err.println("Error writing image to file"); }
                 } // here.

                 if (option == JFileChooser.CANCEL_OPTION) {
                             System.out.println("Task canceled!");

                 }
        }}); // one more }