में निर्देशिका प्राप्त करने के लिए uigetdir के बजाय uigetfile का उपयोग करना तो मुझे MATLAB निर्देशिका चयन gui के बारे में कोई प्रश्न है। मुझे एक निर्देशिका का चयन करने के लिए एक जीयूआई का उपयोग करने की आवश्यकता है, लेकिन समस्या यह है कि uigetdir इंटरफ़ेस भयानक है। अगर मैं इस तरह कहते हैं:मैटलैब
blah = uigetfile('C:\...\T2 Measurements');
यह वही है यह मुझे पता चलता है:
आप देख सकते हैं, इस भयंकर है। फाइल सिस्टम में फ़ाइल के स्थान के बारे में अतिरिक्त जानकारी का एक टन है और प्रासंगिक जानकारी गुना के नीचे है। आदर्श रूप में, मैं यह निर्दिष्ट करना चाहता हूं कि uigetdir फ़ंक्शन यूगेटफाइल जीयूआई का उपयोग करता है, या सिर्फ यूगेटफाइल को यह तर्क दे रहा है कि मैं एक निर्देशिका की तलाश में हूं, एक फ़ाइल नहीं, क्योंकि यह यूगेटफाइल जीयूआई जैसा दिखता है:
लेकिन निश्चित रूप से, यह जरूरी है कि मैं एक फ़ाइल, नहीं एक निर्देशिका का चयन करें। स्पष्ट रूप से निर्देशिकाएं खुली नहीं हैं, इसलिए मुझे लगता है कि मैं उपयोगकर्ता को फ़ोल्डर में किसी भी यादृच्छिक फ़ाइल का चयन कर सकता हूं और मुझे पथनाम मिल सकता है, लेकिन क्या ऐसा करने का एक बेहतर तरीका है? एक और आवेदन में, मैं कल्पना कर सकता था कि मेरी "फ़ोल्डर में एक फ़ाइल का चयन करें" वर्कअराउंड काम नहीं करेगा।
अद्यतन
मैं इसे uigetdir रूप में एक ही तर्क ले बनाने के लिए() एंड्रयू Janke के कोड में कुछ बहुत ही मामूली समायोजन कर दिया। यहां मैं ये आया हूं:
function [pathname] = uigetdir2(start_path, dialog_title)
% Pick a directory with the Java widgets instead of uigetdir
import javax.swing.JFileChooser;
if nargin == 0 || start_path == '' || start_path == 0 % Allow a null argument.
start_path = pwd;
end
jchooser = javaObjectEDT('javax.swing.JFileChooser', start_path);
jchooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
if nargin > 1
jchooser.setDialogTitle(dialog_title);
end
status = jchooser.showOpenDialog([]);
if status == JFileChooser.APPROVE_OPTION
jFile = jchooser.getSelectedFile();
pathname = char(jFile.getPath());
elseif status == JFileChooser.CANCEL_OPTION
pathname = [];
else
error('Error occured while picking file.');
end
@ user1740374 आप एक प्रश्न संपादित करके टिप्पणी नहीं कर सकते। जब आप पर्याप्त प्रतिष्ठा कमाते हैं तो टिप्पणी आपके लिए उपलब्ध होगी। – keyser