JFileChooser没有显示

时间:2015-11-08 21:03:01

标签: java swing jfilechooser

我有一段关于JFileChooser的问题现在已经找不到了帮助......问题是文件窗口没有显示出来。我试图找到这个问题的原因,我测试了以下内容:

public class Test {
   public static void main (String[] args) {   
   load();     
   }
   public static void load () {
      String folder = System.getProperty("user.dir");
      JFileChooser fc = new JFileChooser(folder);
      int resultat = fc.showOpenDialog(null);  
   }
}

运行此代码时,我会看到要显示的窗口。

但是,当我尝试这个时:

public class Test {
    public static void main (String[] args) {   
    String input = JOptionPane.showInputDialog(null, "Make your choice!\n" +
                                                     "1. load file");      
    load();   

    }
}

窗口没有显示,但编程仍在运行... 我不知道可能导致这个问题的原因

2 个答案:

答案 0 :(得分:6)

Mac上的Java对事件调度线程中发生的事情非常挑剔。试试这个。

import java.awt.EventQueue;
import javax.swing.JFileChooser;

public class Test {
    private static int result;
    public static void main(String[] args) throws Exception {
        EventQueue.invokeAndWait(new Runnable() {
            @Override
            public void run() {
                String folder = System.getProperty("user.dir");
                JFileChooser fc = new JFileChooser(folder);
                result = fc.showOpenDialog(null);
            }
        });
        System.out.println(result);
    }
}

InvokeAndWait的文档是here。但基本上,你传递一个Runnable来做Swing的东西,它会在正确的线程中执行它。如果你不想等,还有InvokeLater。

答案 1 :(得分:0)

这是一些代码,JFileChooser需要一个孩子,在这种情况下我使用JDialog

JFileChooser fileChooser = new JFileChooser();
JDialog dialog = new JDialog();  

              fileChooser.setCurrentDirectory(new File(System.getProperty("user.dir")));
              int result = fileChooser.showOpenDialog(dialog);
              if (result == JFileChooser.APPROVE_OPTION) {
                  File selectedFile = fileChooser.getSelectedFile();
                  System.out.println("Selected file: " + selectedFile.getAbsolutePath());
              }else{
                  System.out.println("Cancelled");
              }