你能在 C++ 中使用 Java Swing 吗?

Can you use Java Swing in c++

这可能是个奇怪的问题,但我想知道您是否可以在 c++14 中使用 Java。我不太关心 GTK(我发现它令人困惑且过于复杂)。然而,Swing 非常易于使用,您可以非常快速地获得一个工作项目。所以我想知道你是否可以在 c++ 中使用 Java Swing,所以我可以使用 Swing 作为前景,就像你看到的图形一样,并使用 c++ 作为背景,就像你看不到的东西,像计算和对象之类的。因此,如果我可以让 C++ 代码告诉 Swing 看起来像什么,或者何时更新,那将对我心目中的项目非常有用。提前感谢我可能收到的任何建议。

编辑: 能够在 Java 中使用 c++14 也是可以接受的。另外,如果有人也能给我示例代码,这将非常有帮助。谢谢!

你不应该 运行 Java 来自 C++,而是来自 Java 的 C++。 Oracle 为您提供了一种使用 JNI 加载本机共享库的方法。

因此,您将使用 Swing 在 Java 中创建您的视图,然后您将通过调用在共享库中预编译和导出的 C++ 函数来更新您的视图。

也就是说,使用 JNI 非常棘手,C++ 的速度改进可能不值得;所以你应该考虑只使用 Java(或者只使用 C++ 和一个库来创建你的 GUI,比如 Qt)

选择哪个方向取决于个人喜好(从 C++ 程序加载 JVM 或从 JVM 端加载 DLL)。

通常你会选择更合乎逻辑的方式,例如如果您已经有一个 C++ 程序,您可能希望从 C++ 端加载 JVM。那就是你的情况。特别是如果您要添加的 Java 本质上是 "scripting" C++ 应用程序。

如果您已经有一个 Java 程序并且想要访问 C++ DLL,您可以从 Java 加载 DLL 并编写一个简单的 JNI / native Java class.

在我们这个时代,您会为此使用像 JNA 这样的工具(而不是 JNI):https://github.com/java-native-access/jna

或者您可以使用 SWIG 为您的 C++ classes 生成包装器:http://www.swig.org/