【发布时间】:2013-10-29 01:56:21
【问题描述】:
我正在尝试在我的 LibGDX scene2d 项目中使用 Javas JFileChooser,但是一旦我启动 JFileChooser,我的程序就会冻结。
这是我用来启动文件选择器的代码:
private String getPath(){
String path = "";
fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
int returnVal = fc.showOpenDialog(null);
if (returnVal == JFileChooser.APPROVE_OPTION) {
file = fc.getSelectedFile();
try {
path = file.getAbsolutePath();
} catch (Exception ex) {
System.out.println("problem accessing file" + file.getAbsolutePath() + "\n" + ex.getMessage());
}
} else {
System.out.println("File access cancelled by user.");
}
return path;
}
是 swing 和 libgdx 的兼容性问题还是我遗漏了什么?相同的代码与 nativa java 项目完美配合。 除了代替:fc.showOpenDialog(null); 我使用:fc.showOpenDialog(button); // button 是触发事件的 JButton。
知道我做错了什么吗?
编辑:我真的不介意它是否不能在 Windows 以外的其他平台上运行。
但是如果我选择使用跨平台解决方案,并使用 LibGDX 的方法,我是否必须自己从头开始创建带有 UI 的文件选择器类?
【问题讨论】:
-
对于文件处理,您应该使用 libgdx 的文件处理程序,否则它将无法在不同的平台上工作。 code.google.com/p/libgdx/wiki/FileHandling 。应该可以仅使用 Gdx 文件处理程序的这些功能来构建您的方法,并且您不会遇到任何问题。
-
但我必须使用 UI 编写自己的文件选择器
-
您是否打算调用一个单独的窗口来打开 JFileChooser?您将无法在您的 JLWGL 渲染场景内部调用摇摆工具包窗口。这就是为什么 libGDX 中有用于 UI 小部件(如窗口和面板)的类。