मुझे लगता है कि ऐसा करने का एक आसान तरीका होना चाहिए लेकिन मैं इसे समझ नहीं सकता। मेरे पास एक JFileChooser है जो उपयोगकर्ता को निर्देशिका चुनने की अनुमति देता है। मैं उपयोगकर्ता को कुछ संदर्भ देने के लिए निर्देशिकाओं में सभी फाइलों को दिखाना चाहता हूं, लेकिन केवल निर्देशिकाओं को चयन के रूप में स्वीकार किया जाना चाहिए (शायद फ़ाइल चयनित होने पर ओपन बटन अक्षम हो जाएगा)। क्या ऐसा करने का कोई आसान तरीका है?JFileChooser निर्देशिका का चयन करें लेकिन फ़ाइलों को दिखाएं
उत्तर
स्वीकृति चयन() विधि को ओवरराइड करें। की तरह कुछ:
JFileChooser chooser = new JFileChooser(new File("."))
{
public void approveSelection()
{
if (getSelectedFile().isFile())
{
// beep
return;
}
else
super.approveSelection();
}
};
AFAIK JFileChooser चयन फ़िल्टरिंग (जिसे चुना जा सकता है) से फ़ाइल फ़िल्टरिंग (जिसे देखा जा सकता है, बहुत विन्यास योग्य) अलग करता है।
चयन छानने के विन्यास अधिक सीमित है, लेकिन AFAIK आप केवल dirs या केवल फाइलों setFileSelectionMode()
साथ चयन किया जाना मुझे लगता है कि सबसे अच्छा समाधान सिर्फ उपयोगकर्ता का चयन करने के लिए या तो एक अनुमति देने के लिए है की अनुमति देने के लिए चुन सकते हैं फ़ाइल या एक निर्देशिका। और यदि उपयोगकर्ता फ़ाइल का चयन करता है तो उस निर्देशिका का उपयोग करें जहां वह फ़ाइल स्थित है।
देखें setFileSelectionMode()
How to Use File Choosers में:
setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY)
परिशिष्ट: प्रभाव इस FileChooserDemo
की uncommenting लाइन 73 से देख जा सकता है, लेकिन यह मंच पर निर्भर हो गया लगता है।
परिशिष्ट: FILES_AND_DIRECTORIES
का उपयोग कर रहे हैं, तो उसके अनुसार बटन पाठ बदलने पर विचार:
chooser.setApproveButtonText("Choose directory");
प्रभाव के रूप में एल & है एफ निर्भर, प्लेटफार्मों पर DIRECTORIES_ONLY
का उपयोग कर कि पहले से ही अपने यूआई आवश्यकताओं को पूरा करने पर विचार:
if (System.getProperty("os.name").startsWith("Mac OS X")) {
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
} else {
chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
}
लेकिन वह फाइलों को छुपाएगा, जो वह नहीं चाहता है। –
@mmyers: यह उपरोक्त उद्धृत उदाहरण में ग्रे में फ़ाइलों को दिखाता है। वाईएमएमवी – trashgod
ट्यूटोरियल कहता है, ऐसा लगता है कि यह लैफ-निर्भर है। –
मेरा समाधान कैमिकर और ट्रैशगोड के उत्तरों के बीच एक विलय है:
final JFileChooser chooser = new JFileChooser() {
public void approveSelection() {
if (getSelectedFile().isFile()) {
return;
} else
super.approveSelection();
}
};
chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
+1 ऐसा लगता है कि मैं अच्छी कंपनी में हूं! मैंने इस संयुक्त दृष्टिकोण को दर्शाने के लिए अपना उत्तर अपडेट किया। – trashgod
बहुत अच्छा! 'JFileChooser.FILES_AND_DIRECTORIES' ** महत्वपूर्ण ** है! इसके बिना, (जैसा कि 'कैमिकर के जवाब में) समाधान ** बेकार ** है, जैसा कि मैंने परीक्षण किया था। –
कुछ उपयोगकर्ताओं के लिए approveSelection
ओवरराइड करने का समाधान परेशान हो सकता है।
कभी-कभी, कोई उपयोगकर्ता किसी कारण से किसी फ़ाइल में फ़ाइल पर क्लिक नहीं करेगा (भले ही वह निर्देशिका का चयन करना चाहती है न कि फ़ाइल)। यदि ऐसा होता है, तो उपयोगकर्ता JFileChooser
में फंस गया होगा (दयालु-ए) approveSelection
विफल हो जाएगा, भले ही वह फ़ाइल को अचयनित करे।
JFileChooser fileChooser = new JFileChooser();
fileChooser.setFileSelectionMode(
JFileChooser.FILES_AND_DIRECTORIES);
int option = fileChooser.showDialog(null,
"Select Directory");
if (option == JFileChooser.APPROVE_OPTION) {
File f = fileChooser.getSelectedFile();
// if the user accidently click a file, then select the parent directory.
if (!f.isDirectory()) {
f = f.getParentFile();
}
System.out.println("Selected directory for import " + f);
}
निर्देशिका का चयन, उपयोगकर्ता मेरी राय में एक बेहतर प्रयोज्य में एक फ़ाइल परिणाम चयनित होने पर भी इस झुंझलाहट से बचने के लिए, यह है कि मुझे क्या करना है।
रखें fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY)
और उपयोग:
File[] selectedFiles = fileChooser.getSelectedFile().listFiles();
- 1. jfilechooser दिखाएं छवि थंबनेल
- 2. JavaFX FileChooser फ़ाइलों और/या निर्देशिका का चयन करें?
- 3. JFileChooser
- 4. JFileChooser
- 5. वर्तमान निर्देशिका को खोलने के लिए JFileChooser सेट करें
- 6. JFileChooser का उपयोग कर निर्देशिका पथ कैसे प्राप्त करें?
- 7. JFileChooser संवाद बनाते समय डिफ़ॉल्ट फ़ाइलफिल्टर का चयन कैसे करें?
- 8. निर्देशिका का चयन कैसे करें और पायथन
- 9. JFileChooser
- 10. सिस्टम फ़ाइलों को दिखाएं/ओएसएक्स
- 11. फ़ाइलों को निर्देशिका में
- 12. निर्देशिका संरचना की प्रतिलिपि कैसे करें, लेकिन केवल कुछ फ़ाइलों को शामिल करें (विंडोज बैच फ़ाइलों का उपयोग करके)
- 13. JFileChooser JApplet
- 14. मैं JFileChooser को निर्देशिका में कैसे प्रतिबंधित करूं?
- 15. JFileChooser
- 16. JFileChooser में निर्देशिका नाम संपादन को कैसे रोकें?
- 17. JFileChooser
- 18. MYSQL: चयन विधि - लेकिन डुप्लीकेट/ग्रुप या डिस्टिंट नहीं दिखाएं?
- 19. JFileChooser getCurrentDirectory गलत वर्तमान निर्देशिका लौट रहा है?
- 20. विम NERDTree: केवल .txt फ़ाइलों को दिखाएं?
- 21. एकाधिक फ़ाइलों का चयन और
- 22. निर्देशिका संरचना से फ़ाइलों की प्रतिलिपि बनाएँ लेकिन नामित फ़ोल्डर
- 23. JFileChooser खाली फ़ाइल
- 24. JFileChooser का उपयोग कर निर्देशिका में सभी फ़ाइल नाम प्राप्त करें?
- 25. निर्देशिका से पिछली संशोधित फ़ाइल का चयन करें
- 26. रेल 3 - सार्वजनिक निर्देशिका में फ़ाइलों को अपलोड करें
- 27. स्मार्टगिट - एकाधिक कामों में सभी फ़ाइलों का चयन करें
- 28. एंड्रॉइड की कैश निर्देशिका में फ़ाइलों को कैसे स्टोर करें?
- 29. फ़ाइलों की एक सूची को निर्देशिका में कॉपी करें
- 30. फ़ाइलों को अनदेखा करने के लिए गिटिनोरोर का उपयोग करके (लेकिन हटाएं नहीं) फ़ाइलों
बल्कि गरीब UX। –