3

我想知道是否有人有任何尝试运行托管在 Swing 组件中的复杂 SWT UI 的经验。

我已经设法进行了一个非常简单的演示,但是如果其他人尝试过并且失败/成功地做到了这一点,那么从他们的经验中学习会很棒。

所以重申一下我的应用程序是一个 Swing 应用程序,我希望使用一个复杂的 SWT UI 组件(拖放、弹出窗口和对话框)——有人管理过这个吗?

4

2 回答 2

3

我使用过 Swing 和 SWT,尽管以前从未在同一个应用程序/项目中使用过。

只要您不尝试在同一个窗口中将组件混合在一起,我看不出有任何理由您不能拥有完全独立的窗口/对话框,每个窗口/对话框都使用特定的小部件集。然而,试图在一个窗口中混合 SWT 和 Swing 可能永远不会奏效,或者至少会导致很多问题,因为这两个小部件集都依赖于完全不同的绘图/布局方式 - Swing 的组件都直接在 Java 中处理并且是与底层操作系统完全分离,而 SWT 显式依赖底层操作系统来完成所有(或大部分)GUI 渲染。试图将两者混合起来可能会导致各种问题。

当然,我也会抛出通常的“这不是推荐的做法”响应:除非您在这里有一些非常具体的目标,否则在同一个应用程序中混合不同的小部件集并不是一个好主意。Swing 和 SWT 有两种完全不同的理念和底层架构。事实上,SWT 的诞生是因为 IBM/OTI 不喜欢 Swing 采用的方法,因此选择实现自己的小部件。对于 GUI 小部件的这种对比方法,您最好选择一个并坚持使用它,而不是将两者混合在一起。

于 2009-03-17T12:21:50.920 回答
2

混合 Swing 和 SWT 并不是最好的选择,但如果你别无选择,它也不是很难杀死的野兽。试着在你的代码中强制执行一些规则/标准。例如。将所有对话框保留在 Swing 中(如果没有理由,不要混合使用两者),使用命名约定来区分 Swing 和 SWT 组件等。确保您充分了解 Swing 和 SWT 的方式在您开始处理任何复杂的 UI 问题之前,组件由 OS/JVM 处理。

需要注意的一件事是在 Swing 和 SWT 组件之间拖放。这有点棘手,但特别是如果您开始使用自定义数据类型。

于 2009-05-11T06:41:01.760 回答