2017-08-30 2 views
0

J'utilisais un programme java qui analyse les données que j'ai écrites. Lorsque j'ai essayé de charger le fichier de données, le JFileChooser s'ouvre normalement, mais je ne peux pas double-cliquer sur le dossier pour changer le répertoire de travail. Quelqu'un d'autre rencontre ce problème, existe-t-il une solution de contournement? Je ne suis pas sûr si c'est un java, éclipse, mac, ou un problème de combinaison.JFileChooser ne reconnaît pas un dossier, ne peut pas changer de répertoire

Je courais éclipse (oxygène) sur un Mac 10.12.6 (Sierra) java 1.8.0_121

Voici la principale d'un SSCE.

public static void main(String[] args) { 

    JFileChooser fileChooser = new JFileChooser("."); 
    int status = fileChooser.showOpenDialog(null); 

    if (status == JFileChooser.APPROVE_OPTION) { 
     File selectedFile = fileChooser.getSelectedFile(); 
     System.out.println(selectedFile.getParent()); 
     System.out.println(selectedFile.getName()); 
    } else if (status == JFileChooser.CANCEL_OPTION) { 
     System.out.println("canceled"); 
    } 

} 

merci

+0

Pour votre information - Juste ont vérifié votre code et il fonctionne pour moi sur Windows. Aussi pourriez-vous essayer de jouer avec look et se sentir comme mentionné [ici] (https: // stackoverflow.com/questions/18642158/pourquoi-fait-jfilechooser-showopendialog-accrocher-sur-mac-osx) –

+0

Et encore un [ici] (http://supunmali-myexperience.blogspot.com.by/2012/10/issue- jfilechooser-on-mac-os-x.html) –

+0

Qu'en est-il des permissions du répertoire? –

Répondre

0

Comment allez-vous, HowYaDoing?

J'ai le même problème, mon contexte est légèrement différent.

Je développe un add-on Freeplane "GTD Sync avec todo.txt" sur une machine Linux à double démarrage &. Parce que je voulais être en mesure de tester mon add-on sur Mac, j'ai installé Mac OS X 10.11 El Capitan sur Oracle VM VirtualBox selon this description. Après avoir installé Freeplane sur la machine virtuelle Mac, j'ai remarqué dans les dialogues d'ouverture et de sauvegarde que je ne pouvais pas passer aux sous-répertoires en double-cliquant et que le bouton Ouvrir est grisé. Ce sont les deux dialogues JFileChooser. C'est très regrettable, parce que je voulais spécifiquement tester un dialogue JFileChooser qui fait partie de mon add-on. Comment puis-je tester mon add-on de manière fiable, si cela ne fonctionne pas pour l'application principale?

J'ai installé une autre application Java que je connais: ProjectLibre. Le même problème se produit dans la boîte de dialogue Ouvrir un fichier. Freeplane et ProjectLibre sont des applications bien établies avec une large base d'utilisateurs. Je m'attendrais à ce que les utilisateurs se plaignent de ce problème, mais jusqu'à présent rien à trouver avec Google.

Je peux reproduire que changer L & F à la plate-forme X résout le problème avec le bouton ouvert grisé et que double-cliquer sur un sous-répertoire ne fait toujours rien.

J'ai essayé d'ajouter Freeplane à Préférences> Sécurité & Confidentialité> Confidentialité> Accessibilité, mais cela n'a pas résolu le problème.

Aujourd'hui, j'ai trouvé a description pour l'installation de macOS 10.13 sur une machine virtuelle. J'ai essayé d'exécuter Freeplane sur cette machine et le succès: les dialogues de JFileChooser fonctionnent correctement et vous pouvez passer à un sous-répertoire en double-cliquant dessus! Je vais utiliser cette VM pour tester. La mise à niveau vers macOS 10.13 pourrait donc résoudre votre problème. Je soupçonne également qu'il doit y avoir une autre solution, sinon je ne peux pas expliquer pourquoi il n'y a pas plus de plaintes à propos de ce problème.

EDIT: J'ai essayé Freeplane sur un macOS 10.12 Les dialogues de VM et JFileChooser fonctionnent correctement. Donc ce n'est probablement pas la version. J'ai également comparé les paramètres de sécurité et les autorisations de fichiers entre les machines virtuelles. Je ne peux pas trouver de différence.

Cheers,

Henk

+0

Le personnel informatique où je travaille prévoit une mise à niveau vers 10.13. Je vous ferai savoir si cela fonctionne. En attendant, je suis passé à javafx. – HowYaDoing