Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何通过将面板设置为父级来打开FileDialog?_Java_Swing_Awt - Fatal编程技术网

Java 如何通过将面板设置为父级来打开FileDialog?

Java 如何通过将面板设置为父级来打开FileDialog?,java,swing,awt,Java,Swing,Awt,我有一个包含文件部分按钮的面板。单击后,按钮本身应加载FileDialog()。调用FileDialog()构造函数时,我发现当我传递JPanel时,它会询问父帧或对话框。面板本身在JOptionPane.showMessageDialog()方法中调用。如何使之成为可能?代码如下: JPanel pnlMain; JButton btnPath; pnlPath.add(btnPath); //Click Event btnPath.addActionListene

我有一个包含文件部分按钮的面板。单击后,按钮本身应加载
FileDialog()
。调用
FileDialog()
构造函数时,我发现当我传递
JPanel
时,它会询问父帧或对话框。面板本身在
JOptionPane.showMessageDialog()方法中调用。如何使之成为可能?代码如下:

JPanel pnlMain;
JButton btnPath;
 pnlPath.add(btnPath);
 //Click Event
            btnPath.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println("File Section Clicked..");
                java.awt.FileDialog fd = new java.awt.FileDialog();
            }
        });
            JOptionPane.showMessageDialog(null, pnlMain, "Settings", JOptionPane.PLAIN_MESSAGE);

我创建了一个新的JFrame实例,它成功了:

FileDialog fd = new FileDialog(new Frame(),"My Settings",FileDialog.LOAD);

为什么要在Swing中使用旧的AWT对话框?为什么不?我不想要基于SWING的文件选择器,因为我需要提供本机的外观。这里还有一个官方教程:不知怎的,它没有。。我不知道为什么