gpt4 book ai didi

java - 将 AWT 应用程序转换为 SWT/JFace

转载 作者:搜寻专家 更新时间:2023-11-01 02:33:08 25 4
gpt4 key购买 nike

我目前正在考虑将一个中小型项目从 AWT 转换为 SWT,尽管 Swing 还没有完全脱离现实。我正在考虑将主窗口转换为 SWT_AWT 桥对象,但我不知道这项工作的语义是如何工作的。在那之后,我计划更新 dialog for dialog,但不一定在一个版本内。这可能吗?

有没有人做过这样的转换,可以给我一些提示吗?那里甚至有教程吗?甚至可能有一种工具可以自动化其中的一部分吗?我试过谷歌搜索,但无济于事。

更新:另外一件事是:目前,这是一个 netbeans 项目。有没有用,我不知道。

最佳答案

我们已经这样做过很多次了。 但这只是因为我们要从 Swing 应用程序转到 Eclipse RCP 应用程序,而不是因为我们喜欢搞砸事情。该项目将真正让您知道您是否已将 Controller /模型代码与 View 代码分开。

一个建议是不要尝试一次转换所有内容。您最终会得到一堆根本不起作用的混合代码。您可以从转换门户开始。我会考虑选项卡、对话框或窗口中的任何内容,本质上是自包含单元。如果您有一个打开的窗口,请在 SWT 中创建该窗口,但使其内容成为现有的 AWT/Swing。这应该是相当直接的,并允许您习惯(我真的希望他们没有喝醉并且有充分的理由这样做)实例化和关联父/子控件的方式。

可能出现的一个陷阱是透明组件。 Swing,除了一个“窗口”类之外,都是用 Java 呈现的。这使得按照您想要的方式呈现事物变得非常容易。在 SWT 中,有一些限制:

  • 边框。如果您使用 SWT.BORDER,您将无法使用 native 组件使用的任何颜色。最好的办法是使用 PaintListener 并呈现您自己的边框(如果您希望它们具有不同的样式或颜色)。
  • 透明标签、进度条。我无法让标签或进度条具有透明背景。如果您希望它们采用父颜色或绘图,您需要自己渲染文本和其他控件。
  • 控制。 SWT 中有合成器和控件。将控件视为执行所有 native API 调用的基本 native 控件。这些不能被子类化,这使事情变得困难。
  • 表格会给你带来最多的麻烦。在尝试将 JTable 转换为 Table 或 TableViewer 之前,请确保一切稳定。您将在这些方面花费一些时间,尤其是当您拥有自定义编辑器和查看器时。

我没有研究过为什么 SWT 是这样设计的。我猜必须有一个很好的理由。如果有人有博客或对其设计进行辩护,那就太好了,这样我就不必搜索它了。一旦发布,我将删除这些行,因为它们与问题无关。

添加

我想补充一点,因为你有一个我认为有效的现有产品。我能给你的最好建议是永远不要让你的代码进入无法编译和运行的状态。如果您进行转换,并且您 checkin 的任何内容始终运行和执行(尽管 SWT/AWT/Swing 之间存在视觉差异),从长远来看,您会省去很多麻烦。您能做的最糟糕的事情就是尝试一次解决所有问题,并使您的代码一次处于不稳定状态数周。

关于java - 将 AWT 应用程序转换为 SWT/JFace,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4650966/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com