2011-11-26 7 views
15

जावा अनुप्रयोगों का उपयोग करते समय, हर बार जब मैं एक संवाद बॉक्स खोलता हूं, तो प्रारंभिक निर्देशिका हमेशा मेरी होम निर्देशिका होती है। क्या आखिरी इस्तेमाल की गई निर्देशिका को याद रखने का कोई तरीका है? वैकल्पिक रूप से, क्या वहां 'सुधार' जावा फ़ाइल चयन संवाद हैं जो टाइप-टू-सर्च या किसी अन्य सुविधा को अनुमति देते हैं जो अधिकांश अन्य एप्लिकेशन फ़ाइल चयन संवादों में मानक हैं?जावा फ़ाइल चयन संवाद को अंतिम निर्देशिका याद रखने का कोई तरीका है?

संपादित करें: मुझे लगता है कि उत्तर जावा अनुप्रयोगों के लिए प्रश्न को संबोधित करते हैं, लेकिन उपयोगकर्ता के लिए नहीं। शायद उपयोगकर्ता के लिए फ़ाइल ब्राउज़र इंटरफ़ेस को बदलना संभव नहीं है, लेकिन मैं इसे जानना चाहता हूं। यदि यह मायने रखता है, तो मेरे पास कुछ विशिष्ट उदाहरण हैं (अमेज़ॅन एडब्लूएस अपलोडर) लेकिन मैंने देखा है कि अधिकांश जावा अनुप्रयोगों में व्यवहार जो ब्राउज़र ब्राउज़र का उपयोग करते हैं।

उत्तर

12

फ़ाइल चयनकर्ता को क्लास एट्रिब्यूट के रूप में स्टोर करें। जब इसे फिर से खोला जाता है, तो निम्नलिखित संरक्षित किया जाएगा।

  1. निर्देशिका।
  2. निर्देशिका में जगह जहां उपयोगकर्ता स्क्रॉल किया गया था।
  3. चयनित फ़ाइल फ़िल्टर।
  4. आकार।
  5. स्क्रीन पर स्थान।
  6. पीएलएफ़।
  7. ..

वहाँ उसे अंतिम बार उपयोग निर्देशिका याद करने के लिए कोई तरीका है?

बेशक

, अगर आप राज्य रन के बीच जारी रहती है मतलब है, वहाँ विवरण के भंडारण के वैकल्पिक रूपों, और स्थानों/तरीके उन्हें स्टोर करने के लिए के एक नंबर रहे हैं। फ़ाइल का उपयोग कर JFrame की सीमाओं को संग्रहीत करने के उदाहरण के लिए this answer देखें।


शायद यह संभव नहीं है उपयोगकर्ता फ़ाइल ब्राउज़र इंटरफ़ेस बदलने के लिए, ..

क्या उपयोगकर्ता? क्या आपका मतलब डेवलपर है जो ऐप में एक का उपयोग करता है।

शायद आपको अपनी फ़ाइल चयनकर्ता को लागू करने की आवश्यकता है। यदि ऐसा है, तो आप FileBro कोड से शुरू कर सकते हैं।

+0

+1 इतना आसान है। दूसरे शब्दों में, केवल एक बनाएं और इसे फिर से उपयोग करें ताकि यह अपने राज्य (चयन, स्थान इत्यादि) को बरकरार रखे –

+0

यह उत्कृष्ट प्रोजेक्ट +1 – mKorbel

+0

'उपयोगकर्ता' द्वारा, मेरा मतलब अंत उपयोगकर्ता है, डेवलपर नहीं। मुझे अक्सर उन लोगों द्वारा लिखित जावा एप्लिकेशन का उपयोग करने के लिए मजबूर किया जाता है जिनके पास फ़ाइल ब्राउज़र इंटरफेस नहीं है जिन्हें मैं पसंद नहीं करता हूं। मुझे लगता है कि अगर मैं स्रोत तक पहुंच प्राप्त कर सकता हूं, तो मैं फ़ाइल ब्राउज़र बदल सकता हूं और कोड को दोबारा बदल सकता हूं, ताकि अंत में आपका उत्तर बहुत उपयोगी हो। – keflavich

2

आप आवेदन में पिछले निर्देशिका स्थान को कैश कर सकते और द्वारा setCurrentDirectory

+0

मुझे लगता है आप स्विंग पर बात कर रहे हैं के साथ खोलने के लिए निर्देशिका संवाद के साथ एक सरल कोड का इस्तेमाल किया जा सकता है। –

+1

यह चयनकर्ता के संदर्भ को बनाए रखने के रूप में एक समाधान के रूप में अच्छा नहीं है। मेरा जवाब देखें –

+2

@Andrew फ़ाइलचोजर के उदाहरण को बनाए रखने के बारे में नहीं है, बस इसके स्थान को बनाए रखने के बारे में –

8

स्विंग JFileChooser खोलते समय फ़ाइल चयनकर्ता डिफ़ॉल्ट स्थान को निर्दिष्ट प्रारंभिक निर्देशिका स्थापित करने के लिए एक विधि है। setCurrentDirectory(File dir) फ़ाइल चुनने के बाद आप getCurrentDirectory पर कॉल करके चयनित निर्देशिका प्राप्त कर सकते हैं और इसे अपने ऐप की कुछ कॉन्फ़िगरेशन फ़ाइल में संग्रहीत कर सकते हैं।

+0

यह एक निम्न स्तर का काम है, है ना? क्या उपयोगकर्ता के रूप में उन चरों को एक्सेस और संशोधित करने का कोई तरीका है? – keflavich

+1

यह चयनकर्ता के संदर्भ को बनाए रखने के रूप में एक समाधान के रूप में अच्छा नहीं है। मेरा जवाब देखें –

28

JFileChooser यह याद नहीं है।हालांकि, जावा एक प्राथमिकताएं API

Preferences prefs = Preferences.userRoot().node(getClass().getName()); 
JFileChooser chooser = new JFileChooser(prefs.get(LAST_USED_FOLDER, 
    new File(".").getAbsolutePath())); 
int returnVal = chooser.showOpenDialog(null); 
if (returnVal == JFileChooser.APPROVE_OPTION) { 
    // do something 
    prefs.put(LAST_USED_FOLDER, chooser.getSelectedFile().getParent()); 
} 
+1

जहां LAST_USED_FOLDER परिभाषित किया गया है? – Wronski

+2

यह स्थिर है। बस एक परिभाषित करें। –

0

यहाँ मैं पिछले उपयोग निर्देशिका

IDialogSettings dialogSettings = Activator.getDefault().getDialogSettings(); 
    String lastUsedPath = dialogSettings.get(IAntUIConstants.DIALOGSTORE_LASTANTHOME); 
    if (lastUsedPath == null) { 
     lastUsedPath = "c:\\"; 
    } 
    DirectoryDialog dialog = new DirectoryDialog(Display.getDefault().getActiveShell()); 
    dialog.setFilterPath(lastUsedPath); 
    String location = dialog.open(); 
    if (location == null) { 
     return; 
    } 
    dialogSettings.put(IAntUIConstants.DIALOGSTORE_LASTANTHOME, location); 
     AntCorePreferences preferences = AntCorePlugin.getPlugin().getPreferences(); 
     String defaultHome = preferences.getAntHome(); 
     if (location.equalsIgnoreCase(defaultHome)) { 
      location = null; 
     } 
संबंधित मुद्दे

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