如何使Swing/JFace/SWT GUI可寻址?

Nic*_*don 5 java user-interface swing design-patterns

我有一个"胖"的GUI,它变得相当复杂,我想添加从一个地方到另一个地方的链接,并添加后退/前进按钮以方便导航.在我看来,如果我的应用程序是可寻址的,这将更容易:每个复合可以有它的URI,链接将使用该URI.

是否有适用于此问题的设计模式?

我可以看看Firefox或Eclipse的源代码,但这些都是巨大的项目,需要花费大量时间来理解它,所以我在这里问.在某处有一个更简单的例子吗?

当然,如果我首先构建一个Web应用程序会更简单,但我不会很快从头开始重写这个巨大的应用程序.

Mic*_*ers 0

在 Swing 中,您可以使用CardLayout。您可以让每个“页面”成为一张卡片,并且卡片的名称(在将卡片添加到布局时选择)将相当于您想要的 URI。

例子:

String PAGE_1_KEY = "page 1";
String PAGE_2_KEY = "page 2";
// as many keys as you need

JFrame frame = ...;
frame.setLayout(new CardLayout());
frame.add(createPage1(), PAGE_1_KEY);
frame.add(createPage2(), PAGE_2_KEY);
// etc.
Run Code Online (Sandbox Code Playgroud)

然后在按钮的动作侦听器中,您可以调用

((CardLayout)frame.getLayout()).show(frame, PAGE_1_KEY); // or whichever
Run Code Online (Sandbox Code Playgroud)