J'ai donc une question sur GUI de sélection de répertoire MATLAB. J'ai besoin d'utiliser une interface graphique pour sélectionner un répertoire, mais le problème est que l'interface UIGETDIR est affreuse. Si j'appelle comme ceci: C'est ce qu'il me montre: p> Comme vous pouvez le constater, c'est affreux. Il y a une tonne d'informations étrangères sur l'emplacement du fichier dans le système de fichiers et les informations pertinentes est au-dessous du pli. Idéalement, je voudrais spécifier que la fonction UIGETDIR utilise l'interface graphique UIGETFILE, ou simplement passer une dispute à UIGETFile Dites-le que je cherche un répertoire, pas un fichier unique, car c'est ce que l'on ressemble à l'interface de l'UIGETFILE: p> Mais bien sûr, cela nécessite que je Sélectionnez un fichier, pas un répertoire. Évidemment, les répertoires ne sont pas ouverts, alors je suppose que je pouvais simplement avoir l'utilisateur de sélectionner un fichier aléatoire dans le dossier et je peux obtenir le chemin de chemin, mais y a-t-il une meilleure façon de le faire? Dans une autre application, je pouvais imaginer que ma solution de contournement "Sélectionner un fichier dans le dossier" ne fonctionnerait pas. P> update strong> p> J'ai fait un certain très mineur Ajustements du code de Andrew Janke pour le faire prendre les mêmes arguments que UIGETDIR (). Voici ce que je suis venu avec: p> P>
P>
3 Réponses :
Yuck.
Vous pouvez contourner UIGETDIR () et écrire votre propre fonction de sélecteur de fichiers en appelant directement des objets Java Swing, y compris le jfilechooser. Qui est probablement ce que UIGETFILE () fait sous la hotte. P>
J'ai changé cette fonction pour pouvoir sélectionner plusieurs fichiers et dossiers en même temps
Votre code ne fonctionne pas pour les premiers paramètres non actionnés, essayez uIGETFilesandDirs ('C: \') code>. Votre
StartPath == code> Comparaisons Les tableaux de retour, ce qui n'est pas ce que vous voulez!
Travaille pour moi. Simple et génial!
Basé sur Andrew Janke's Réponse J'ai créé un morceau de code qui utilise la boîte de dialogue MATLAB et active Multi Select pour les répertoires:
function [files] = uigetdirMultiSelect() import com.mathworks.mwswing.MJFileChooserPerPlatform; jchooser = javaObjectEDT('com.mathworks.mwswing.MJFileChooserPerPlatform'); jchooser.setFileSelectionMode(javax.swing.JFileChooser.DIRECTORIES_ONLY); jchooser.setMultiSelectionEnabled(true); jchooser.showOpenDialog([]); if jchooser.getState() == javax.swing.JFileChooser.APPROVE_OPTION jFiles = jchooser.getSelectedFiles(); files = arrayfun(@(x) char(x.getPath()), jFiles, 'UniformOutput', false); elseif jchooser.getState() == javax.swing.JFileChooser.CANCEL_OPTION files = []; else error('Error occurred while picking file'); end
Travaillé pour moi sur Ubuntu 18.04
@ user1740374 Vous ne pouvez pas commenter en modifiant une question. Les commentaires seront disponibles pour vous lorsque vous gagnez suffisamment de réputation.