java - पुष्टि संवाद के साथ JFileChooser




swing confirmation (4)

मैं ऐसे प्रोग्राम पर काम कर रहा हूं जो पाठ फ़ाइलों से डेटा लोड और सहेजता है, और मैं उपयोगकर्ता को लोड और सहेजने पर JFileChooser के साथ फ़ाइल नाम पूछ रहा हूं।

यह प्रश्न सहेजने वाले संवाद के बारे में है: new JFileChooser().showSaveDialog(); । उपयोगकर्ता तब किसी भी चेतावनी के बिना मौजूदा फाइल को ओवरराइट कर सकता है, और यह एक समस्या होगी

इसे ठीक करने के तरीके पर कोई सुझाव? मैं कुछ विधि या विकल्प की तलाश में हूं, लेकिन मुझे कुछ भी नहीं मिला।

अग्रिम में धन्यवाद।


उत्तर के लिए धन्यवाद, लेकिन मुझे एक और कामकाज मिला, JFileChooser के अनुमोदन चयन () को ओवरराइड करना, इस तरह:

JFileChooser example = new JFileChooser(){
    @Override
    public void approveSelection(){
        File f = getSelectedFile();
        if(f.exists() && getDialogType() == SAVE_DIALOG){
            int result = JOptionPane.showConfirmDialog(this,"The file exists, overwrite?","Existing file",JOptionPane.YES_NO_CANCEL_OPTION);
            switch(result){
                case JOptionPane.YES_OPTION:
                    super.approveSelection();
                    return;
                case JOptionPane.NO_OPTION:
                    return;
                case JOptionPane.CLOSED_OPTION:
                    return;
                case JOptionPane.CANCEL_OPTION:
                    cancelSelection();
                    return;
            }
        }
        super.approveSelection();
    }        
}

मुझे आशा है कि यह किसी और के लिए उपयोगी हो सकता है।


जैसा कि एवरड्रैगन ने कहा, एक्स के साथ बंद नहीं किया जाता है। मैंने सभी अप्रासंगिक विकल्पों को संभालने के लिए एक डिफ़ॉल्ट केस जोड़ा:

final JFileChooser fc = new JFileChooser() {

        private static final long serialVersionUID = 7919427933588163126L;

        public void approveSelection() {
            File f = getSelectedFile();
            if (f.exists() && getDialogType() == SAVE_DIALOG) {
                int result = JOptionPane.showConfirmDialog(this,
                        "The file exists, overwrite?", "Existing file",
                        JOptionPane.YES_NO_CANCEL_OPTION);
                switch (result) {
                case JOptionPane.YES_OPTION:
                    super.approveSelection();
                    return;
                case JOptionPane.CANCEL_OPTION:
                    cancelSelection();
                    return;
                default:
                    return;
                }
            }
            super.approveSelection();
        }
    };

सहेजने से पहले जांचें कि क्या एक ही फाइल पहले से मौजूद है, तो पुष्टि के लिए उपयोगकर्ता से पूछें कि वह वास्तव में ओवरराइड करना चाहती है: पी

 JDialog.setDefaultLookAndFeelDecorated(true);
    int response = JOptionPane.showConfirmDialog(null, "Are you sure you want to override existing file?", "Confirm",
        JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
    if (response == JOptionPane.NO_OPTION) {
      System.out.println("No button clicked");
    } else if (response == JOptionPane.YES_OPTION) {
      System.out.println("Yes button clicked");
    } else if (response == JOptionPane.CLOSED_OPTION) {
      System.out.println("JOptionPane closed");
    }  

here कोड है

फ़ाइल की जांच करने के लिए पहले से ही मौजूद है

boolean exists = (new File("filename")).exists();
if (exists) {
    // File or directory exists
} else {
    // File or directory does not exist
}

हो सकता है कि आप यह सत्यापित कर सकें कि फ़ाइल पहले से मौजूद नहीं है, और यहां तक ​​कि JFileChooser को FileSystemView भी दें ( इस कन्स्ट्रक्टर को देखें)