【问题标题】:What is the best way to manage application screens in SWT?在 SWT 中管理应用程序屏幕的最佳方式是什么?
【发布时间】:2011-02-10 00:37:38
【问题描述】:

我正在创建一个独立的 SWT 桌面应用程序,它有大约 10 个不同的屏幕(很少有向导、帮助、表单等)。屏幕上的某些元素根本不会改变(如标题、背景等),并且有一个工作区域会根据点击的内容等发生变化。

管理应用程序屏幕的最佳方式是什么?我是否需要在启动时创建所有屏幕,然后根据单击的内容显示/隐藏它们?还是我需要动态创建这些屏幕?

另外,我找不到任何显示/隐藏Composite 的方法,我需要dispose 然后重新创建吗?

最佳做法是什么?我是在 Eclipse 之外开发 SWT 的新手,因此任何帮助都会有所帮助。

【问题讨论】:

    标签: java eclipse swt desktop-application


    【解决方案1】:

    决定是预先创建屏幕还是在第一次需要显示时创建它们是需要根据每个应用程序做出的决定。如果很有可能所有屏幕都需要在特定应用程序运行时使用,并且屏幕数量很少(10 个屏幕相对较少),那么您可能希望在应用程序启动时创建它们,这样 UI应用程序加载后更快捷。

    如果您使用绑定,那么您可能需要提出一个处置策略(即使您只处置绑定),这样您就不会有太多的事件飞来飞去。

    Control 有一个 setVisible(boolean) 方法(Composite 继承自 Control),您可以使用它来显示和隐藏组件。请注意,这只会阻止组合显示在屏幕上,布局管理器仍会为其分配空白空间。许多 SWT 布局都有一种从布局中排除控件的方法,这将摆脱空白区域。例如,如果您使用的是 GridLayout,那么当您隐藏该控件时,您可以将 GridData 对象上的 exclude 变量设置为 true。

    另一种选择是使用 StackLayout。这使您可以将一堆复合材料堆叠在一起,然后选择哪个在顶部。如果您有静态区域和您描述的工作区域,这可能非常适合您。我会将页眉、页脚和一个带有 StackLayout 的空组合放在一个类文件中。然后,我会将工作区中将显示的每个屏幕放在他们自己的类中。您可以让这些屏幕类扩展 Composite,然后在构造函数中设置它们自己,或者您可以使用工厂方法来设置屏幕。任何一种都是常见且可接受的做法,归结为个人喜好问题。

    【讨论】:

    • 我只能找到java.awt.CardLayout。它不是标准 SWT 类集的一部分吗?
    • 对不起,我错了,是 SWT 中的 StackLayout。
    猜你喜欢
    • 1970-01-01
    • 2015-02-11
    • 2013-05-18
    • 2015-01-07
    • 2017-11-24
    • 1970-01-01
    • 2020-09-20
    • 1970-01-01
    • 2012-06-22
    相关资源
    最近更新 更多