ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java – LibGDX中的JFileChooser

2019-08-31 12:00:35  阅读:202  来源: 互联网

标签:scene2d java libgdx swing


我正在尝试在我的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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有