【问题标题】:Running SWT components within a Swing App在 Swing 应用程序中运行 SWT 组件
【发布时间】:2009-03-06 04:57:53
【问题描述】:

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

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

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

【问题讨论】:

    标签: java user-interface swing swt


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-10-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多