-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 に答える