2010-03-27 8 views
13

मेरे पास "सेव एज़" नामक मेरे एप्लिकेशन में एक विधि है जो कंप्यूटर पर मेरे एप्लिकेशन की छवि को फ़ाइल में सहेजती है। मैंने फ़ाइलों को सहेजने के लिए उपयोगकर्ताओं को वांछित स्थान चुनने के लिए JFileChooser का उपयोग किया। समस्या तब तक होती है जब तक कि उपयोगकर्ता स्पष्ट रूप से फ़ाइल स्वरूप में टाइप नहीं करता है, यह फ़ाइल को कोई विस्तार के साथ सहेजता है। फ़ाइल प्रकार ड्रॉप डाउन मेनू में jpg, png जैसे प्रारूप कैसे हो सकते हैं।JFileChooser का उपयोग कर फ़ाइल को कैसे सहेजना है?

और, मैं अपनी छवि फ़ाइल को सहेजने के लिए फ़ाइल प्रकार ड्रॉप मेनू से विस्तार कैसे प्राप्त कर सकता हूं।

ImageIO.write(image,extension,file); 

उत्तर

16

अंत में, मैं अपने समस्या का समाधान: -

JFileChooser FC=new JFileChooser("C:/"); 
FC.addChoosableFileFilter(new jpgSaveFilter()); 
FC.addChoosableFileFilter(new jpegSaveFilter()); 
FC.addChoosableFileFilter(new PngSaveFilter()); 
FC.addChoosableFileFilter(new gifSaveFilter()); 
FC.addChoosableFileFilter(new BMPSaveFilter()); 
FC.addChoosableFileFilter(new wbmpSaveFilter()); 

int retrival=m_fileChooser_save.showSaveDialog(null); 

if (retrival == m_fileChooser_save.APPROVE_OPTION) 
    { 

     String ext=""; 

     String extension=m_fileChooser_save.getFileFilter().getDescription(); 

     if(extension.equals("*.jpg,*.JPG")) 
     { 
      ext=".jpg"; 
     } 
     if(extension.equals("*.png,*.PNG")) 
     { 
      ext=".png"; 
     } 
     if(Extension.equals("*.gif,*.GIF")) 
     { 
      ext=".gif"; 
     } 
     if(extension.equals("*.wbmp,*.WBMP")) 
     { 
      ext=".wbmp"; 
     } 
     if(Extension.equals("*.jpeg,*.JPEG")) 
     { 
      EXT=".jpeg"; 
     } 
     if(extension.equals("*.bmp,*.BMP")) 
     { 
      ext=".bmp"; 
     } 

उदाहरण फिल्टर:

import java.io.*; 
import java.io.File; 
import java.util.*; 
import javax.swing.filechooser.FileFilter; 
class jpgSaveFilter extends FileFilter 
{ 
    public boolean accept(File f) 
    { 
     if (f.isDirectory()) 
      { 
      return false; 
      } 

     String s = f.getName(); 

     return s.endsWith(".jpg")||s.endsWith(".JPG"); 
    } 

    public String getDescription() 
    { 
     return "*.jpg,*.JPG"; 
    } 

} 
1

उपयोग JFileChoose.SetFileFilter उदाहरण: http://www.java2s.com/Code/JavaAPI/javax.swing/JFileChoosersetFileFilterFileFilterfilter.htm

+0

ठीक .. setFileFilter फ़ाइल प्रकार ड्रॉप डाउन मेनू में एक्सटेंशन दिखाएगा। लेकिन इस फ़ाइल प्रकार ड्रॉप मेनू को चयनित एक्सटेंशन फॉर्म को पुनर्प्राप्त करने या उपयोग करने के लिए कैसे करें .. –

+0

एक बार जब आपके पास चुनी गई फ़ाइल हो, तो यह स्ट्रिंग ext = file.getName() के रूप में आसान होनी चाहिए। Substring (file.getName()। LastIndexOf ("।")); –

+1

यह एक सुंदर पागल यूआरएल है ... इसमें "जावा", "फाइल" और "फ़िल्टर" प्रत्येक तीन बार होता है। – ArtOfWarfare

2

फ़ाइल चयनकर्ता फिल्टर तैयार:

jFileChooser.addChoosableFileFilter(new FileNameExtensionFilter("File X (.xxx)", "xxx")); 
    jFileChooser.addChoosableFileFilter(new FileNameExtensionFilter("File Y (.yyy)", "yyy")); 
    jFileChooser.addChoosableFileFilter(new FileNameExtensionFilter("File Z (.zzz)", "zzz")); 

    // set default type 
    jFileChooser.setFileFilter(jFileChooser.getChoosableFileFilters()[0]); 

    // set default file 
    jFileChooser().setSelectedFile(defaultFile); 

के बाद सत्यापन

//Add extension to Selected file 
File file = new File(jFileChooser().getSelectedFile().getCanonicalPath() + "." + ((FileNameExtensionFilter) jFileChooser().getFileFilter()).getExtensions()[0]); 

को मंजूरी यदि चयनित फाइल एक्सटेंशन के साथ आए एक अच्छा विचार को मान्य हो सकता है।

+1

क्या मैं बस कह सकता हूं, एलओडी सिद्धांत इस जवाब में खिड़की से बाहर निकलते हैं। –

+0

ओएमजी एलओडी, फिर से! क्षमा करें, यह मैं नहीं था, मैं बस एक और लड़का जिसका सामना कर रहा हूं। –

0

मुझे लगता है कि मुझे बेहतर समाधान मिला है। इसे नमूना कोड टुकड़ों के साथ समझाएगा।

इस प्रकार मैं फ़ाइल फ़िल्टर सेट करता हूं:
jFileChooser.setFileFilter(new FileNameExtensionFilter(".txt", "txt"));

इसके बाद मुख्य बचत लाइन:
textArea1.write(new BufferedWriter(new FileWriter(jFileChooser.getSelectedFile().getAbsolutePath() + jFileChooser.getFileFilter().getDescription().replace("All Files", ""))));

बेशक सबसे महत्वपूर्ण यह खंड है: jFileChooser.getSelectedFile().getAbsolutePath() + jFileChooser.getFileFilter().getDescription().replace("All Files", "")

केवल एक चीज जो मुझे पसंद नहीं है, मुझे 'getExtension' जैसी कोई विधि नहीं मिल सका, जिसका अर्थ है कि तारों के साथ अनावश्यक परेशानी के बिना आपके पास कोई अच्छा वर्णन नहीं हो सकता है।


ठीक है, समझ गया। आप ऐसा कुछ कर सकते हैं: jFileChooser.getFileFilter().toString().replaceFirst(".*extensions=\\[(.*)]]", ".$1").replaceFirst(".*AcceptAllFileFilter.*", "")

दुर्भाग्य से यह इतना सुंदर नहीं है, लेकिन एक आकर्षण की तरह काम करता प्रतीत होता है।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^