-1

我正在使用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

     }
   }
});

有什么建议吗?

4

3 回答 3

2

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

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

于 2012-11-16T13:15:20.677 回答
0

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

看看这个简单的例子,我相信它会为你工作。

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

于 2012-11-16T13:17:58.050 回答
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 }
于 2012-11-16T13:22:56.607 回答