java – LibGDX中的JFileChooser
作者:互联网
我正在尝试在我的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;
}
它是摆动和libgdx兼容性问题还是我缺少的东西?相同的代码与nativa java项目完美配合.
除了:fc.showOpenDialog(null);
我用的是:fc.showOpenDialog(button); //按钮是触发事件的JButton.
知道我做错了什么吗?
编辑:我真的不介意它是否不适用于Windows以外的其他平台.
但是如果我选择使用跨平台解决方案,并使用LibGDX的方法,我是否必须自己创建带有UI的文件选择器类?
解决方法:
好的,基于你在上面的答案中的评论,我得知你正在尝试做的是在你的LibGDX游戏窗口中调用一个旋转窗口,这是一个开放的GL渲染场景.
让我阻止你在那里. swing工具包调用自己的渲染引擎,因为它根本不用于此目的 – 它适用于桌面应用程序.因此,当您实例化对话时,各种其他oracle java东西都会与它一起实例化,就像Graphics2D类一样.您不能只将此类添加到scene2D阶段并期望它绘制.它们不实现相同的接口或从相同的基类继承. JFileChooser实现的draw(Graphics2D图形)方法与libGDX类实现的draw(SomeClass foo)方法不同.
因此,如果要创建文件选择器窗口,则需要开始查看libGDX小部件库.可能有人已将某些东西组合在一起,但我对下一个libGDX项目的方法是为我自己的UI库扩展these classes.我不知道你的项目是什么,或者你的时间轴是什么样的,但它确实是一种更好的方法,然后尝试调整swing工具包以在OpenGL渲染场景中渲染.
编辑
经过一些快速阅读后,我将进一步深入猜测swing工具包的呈现方式完全取决于特定平台的JVM实现.现在这是我的CS知识开始有点受限的地方,但我会冒险再次猜测,这与OpenGl的LWJGL实现方式不同,它通过使用C库的Java包装器.
标签:scene2d,java,libgdx,swing 来源: https://codeday.me/bug/20190831/1775608.html