编程语言
首页 > 编程语言> > java – LibGDX中的JFileChooser

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