是否可以在 Intellij 插件中使用 FileDialog?
Is it possible to use a FileDialog from inside an Intellij Plugin?
与此类似answer,使用文件对话框时,需要传入一个JFrame。
我在 ConfigurableUI 菜单内的 JPanel 上有一个按钮,我想在单击它时打开一个文件对话框。此文件对话框需要加载到项目和插件资源文件夹 外部 的文件或目录中...例如 /root/path/to/file.xyz
我试过像这样转到根窗格,但它 returns 一个 Window 对象。
public class MyConfigurableUI implements ConfigurableUi<MyPlugin> {
JPanel panel;
...
public void pressButtonAction(){
//This doesnt work
//JFrame topFrame = (JFrame) SwingUtilities.getWindowAncestor(panel);
FileDialog fd = new FileDialog(panel, "Choose a file", FileDialog.LOAD);
//How do I get the JFrame to pass in?
}
@NotNull
@Override
public JComponent getComponent() {
return panel;
}
}
我查看了 code samples,但没有找到使用文件对话框的示例。
**编辑:**
使用下面的答案,我能够打开一个包含以下代码的文件:
FileChooserDescriptor fcDesc = new FileChooserDescriptor(true,false,false,false,false,false);
FileChooserDialog fcDial = FileChooserFactory.getInstance().createFileChooser(fcDesc, null, null);
VirtualFile[] files = fcDial.choose(null);
//do something with the path
doSomething(files[0].getPath());
请使用内置com.intellij.openapi.fileChooser.FileChooserFactory
与此类似answer,使用文件对话框时,需要传入一个JFrame。
我在 ConfigurableUI 菜单内的 JPanel 上有一个按钮,我想在单击它时打开一个文件对话框。此文件对话框需要加载到项目和插件资源文件夹 外部 的文件或目录中...例如 /root/path/to/file.xyz
我试过像这样转到根窗格,但它 returns 一个 Window 对象。
public class MyConfigurableUI implements ConfigurableUi<MyPlugin> {
JPanel panel;
...
public void pressButtonAction(){
//This doesnt work
//JFrame topFrame = (JFrame) SwingUtilities.getWindowAncestor(panel);
FileDialog fd = new FileDialog(panel, "Choose a file", FileDialog.LOAD);
//How do I get the JFrame to pass in?
}
@NotNull
@Override
public JComponent getComponent() {
return panel;
}
}
我查看了 code samples,但没有找到使用文件对话框的示例。
**编辑:**
使用下面的答案,我能够打开一个包含以下代码的文件:
FileChooserDescriptor fcDesc = new FileChooserDescriptor(true,false,false,false,false,false);
FileChooserDialog fcDial = FileChooserFactory.getInstance().createFileChooser(fcDesc, null, null);
VirtualFile[] files = fcDial.choose(null);
//do something with the path
doSomething(files[0].getPath());
请使用内置com.intellij.openapi.fileChooser.FileChooserFactory