Есть ли способ получить путь к каталогу из FileDialog в Java? - PullRequest
0 голосов
/ 08 марта 2020

Я создаю простую программу на Java и я новичок в GUI в целом. Я пытаюсь открыть FileDialog, чтобы выбрать каталог и использовать его путь для отправки файла в выбранный каталог. Тем не менее, он не работает с FileDialog.

Теперь я попробовал JFileChooser, он продолжает зависать и не отображает полный диалог Ma c OS X так, как это делает FileDialog, и я бы предпочел использовать последний. Ниже приведен код моего FileDialog. Как я могу получить выбранный каталог и распечатать его, когда я выбираю его в диалоговом окне? Я потратил 2 дня на исследования, я просто не могу найти хорошее решение, которое работает и показывает полный диалог MA C OS X.

String osName = System.getProperty("os.name");
String homeDir = System.getProperty("user.home");
File selectedPath = null;
final JFileChooser fc = new JFileChooser();
if (osName.equals("Mac OS X")) {
    System.setProperty("apple.awt.fileDialogForDirectories", "true");
    FileDialog fd = new FileDialog(new Frame(), "Choose a file", FileDialog.LOAD);
    fd.setDirectory(homeDir);
    fd.setVisible(true);
    String filename = fd.getDirectory();
    selectedPath = new File(filename);

    if (filename == null) {
        continue;
    } else {
        save_location = filename;
        dout.writeUTF("200"); //Status OK
        dout.flush();
        System.out.println(filename);
    }               
    System.setProperty("apple.awt.fileDialogForDirectories", "true");
}

1 Ответ

1 голос
/ 08 марта 2020

Как получить выбранный каталог и распечатать его, когда я выбрал его в диалоговом окне?

Используйте fd.getFile(), чтобы получить имя каталога .eg

import java.awt.FileDialog;
import java.awt.Frame;
import java.io.File;

public class Main {
    public static void main(String[] args) {
        String osName = System.getProperty("os.name");
        String homeDir = System.getProperty("user.home");
        File selectedPath = null;
        if (osName.equals("Mac OS X")) {
            System.setProperty("apple.awt.fileDialogForDirectories", "true");
            FileDialog fd = new FileDialog(new Frame(), "Choose a file", FileDialog.LOAD);
            fd.setDirectory(homeDir);
            fd.setVisible(true);
            String fileName = fd.getFile();
            System.out.println(fileName);
            File file;
            if (fileName != null) {
                file = new File(fd.getDirectory() + fileName);
                System.out.println("You selected "+file.getAbsolutePath());
            } else {
                System.out.println("You haven't selected anything");
            }
        }
    }
}

Вывод: когда я выбираю Desktop и затем нажимаю Open

Desktop
You selected /Users/arvind.avinash/Desktop

Примечания:

  1. Используйте fd.getDirectory(), чтобы получить путь родителя выбранного каталога, например, /Users/arvind.avinash/ в моем примере.
  2. Используйте fd.getFile(), чтобы получить имя выбранного каталога, например, Desktop в моем примере. .
  3. Используйте комбинированный fd.getDirectory() + fd.getFile(), чтобы получить полный путь к выбранному каталогу, т.е. /Users/arvind.avinash/Desktop в моем примере.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...