【发布时间】:2015-04-28 14:12:29
【问题描述】:
我正在考虑开发一个带有图形用户界面的 GNOME 桌面应用程序。我知道 GTK+ 是首选,尤其是在为 GNOME 环境开发时。最终用户也将 GTK+ 视为他们使用的应用程序的首选。然而,我正在考虑未来的改进:如果我的应用程序需要移植到其他环境或操作系统,如 KDE、Mac 或 Windows,该怎么办?最好的方法是:Java Swing(因为它独立于平台)还是 GTK+?
【问题讨论】:
我正在考虑开发一个带有图形用户界面的 GNOME 桌面应用程序。我知道 GTK+ 是首选,尤其是在为 GNOME 环境开发时。最终用户也将 GTK+ 视为他们使用的应用程序的首选。然而,我正在考虑未来的改进:如果我的应用程序需要移植到其他环境或操作系统,如 KDE、Mac 或 Windows,该怎么办?最好的方法是:Java Swing(因为它独立于平台)还是 GTK+?
【问题讨论】:
使用 GTK+。如果您确实想移植它,它也可用于 Windows,并且与 gnome 集成得更好。
【讨论】:
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
SwingUtilities.updateComponentTreeUI( this );
在 *nix 变体上,应该在 Swing 中生成 GTK PLAF。在 Apple(1) 上,它可能会生成一个名称中带有“Aqua”的主题,而在 Windows(1) 上,它可能会生成一个类似于“Windows”的主题。
1) 我怀疑 Windows 或 Apple 用户希望看到“GTK 外观”应用程序。在他们的桌面上。 ;)
【讨论】:
com.apple.laf.AquaLookAndFeel。
我的用户通常更喜欢 Swing,但 GTK 应用程序在跨平台维护方面只是稍微困难一些。
GTK 不能在 Mac OS X 上原生运行;
GTK 及其依赖项可以使用MacPorts 构建,Gimp 和Inkscape 等流行的开源工具在应用程序包中包含所需的库。
需要安装 X 服务器。
X11 for Mac 是“与 Mac OS X 完全集成”。
附录:正如@ptomato 所说,portfile 提供 Quartz 和 X11 两种变体。
【讨论】:
sudo port install gtk2 +quartz 即可安装该变体。
答案取决于你真正想要什么。
GTK 库是 Gnome 环境中的原生库:如果您想开发适用于 Gnome 的应用程序,请使用 GTK。
如果您对为 Gnome 用户提供原生感觉不太感兴趣,那么可以使用任何您想要的东西(GTK、Swing、Qt、wx ...)。
顺便说一句,如果你想听听我的个人意见,我更喜欢 GTK。我个人不喜欢 Swing,尤其是当它试图模仿 GTK 的外观和感觉时。
【讨论】: