如何使用MAC OS中的java.awt.FileDialog检测用户是否按下了取消按钮或选择了根目录(主磁盘)?

如何使用MAC OS中的java.awt.FileDialog检测用户是否按下了取消按钮或选择了根目录(主磁盘)?,java,swing,filedialog,Java,Swing,Filedialog,有人知道如何在Mac OS(10.6-雪豹)的java.awt.FileDialog中检测用户是否选择了取消按钮或根磁盘吗 我有以下代码: System.setProperty("apple.awt.fileDialogForDirectories", "true"); FileDialog fd = new FileDialog(this); fd.setDirectory(_projectsBaseDir.getPath()); fd.setLocation(50,50); fd.

有人知道如何在Mac OS(10.6-雪豹)的java.awt.FileDialog中检测用户是否选择了取消按钮或根磁盘吗

我有以下代码:

System.setProperty("apple.awt.fileDialogForDirectories", "true"); 
FileDialog fd = new FileDialog(this);  
fd.setDirectory(_projectsBaseDir.getPath());  
fd.setLocation(50,50); fd.setVisible(true);  
File selectedFile = new File(fd.getFile()); 
System.setProperty("apple.awt.fileDialogForDirectories", "false");

但如果用户在左侧面板(设备下方)上选择主磁盘,则选择返回null,我无法区分用户是否选择了主磁盘或按了取消按钮。(两个操作都返回null)。

如果可以使用Swing,我强烈建议使用JFileChooser。那么您的代码将如下所示:

JFileChooser fc = new JFileChooser();
fc.setCurrentDirectory(_projectsBaseDir.getPath());
fc.setLocation(50,50);
int ret = fc.showOpenDialog(this); // Use .showSaveDialog(this) for save dialog
if(ret == JFileChooser.APPROVE_OPTION)
    File selectedFile = fc.getSelectedFile();

希望这有帮助。

如果可以使用Swing,我强烈建议使用JFileChooser。那么您的代码将如下所示:

JFileChooser fc = new JFileChooser();
fc.setCurrentDirectory(_projectsBaseDir.getPath());
fc.setLocation(50,50);
int ret = fc.showOpenDialog(this); // Use .showSaveDialog(this) for save dialog
if(ret == JFileChooser.APPROVE_OPTION)
    File selectedFile = fc.getSelectedFile();

希望这有帮助。

我需要使用本机对话框,这就是我使用java.awt.FileDialog的原因。我需要使用本机对话框,这就是我使用java.awt.FileDialog的原因。