我有一堆面板放在CardLayout
其中第 n个面板取决于第 (n - 1)个面板中引起的状态变化。由于使用CardLayout
,您必须事先初始化并添加所有面板。因此,它使管理状态变得比必要更难。
Java 或某些第三方开源库是否提供了一种变体,CardLayout
可以懒惰地初始化其组成面板,即它们在它们即将可见之前被初始化?
编辑:
也许我没有清楚地说明问题。让我再尝试一次。
我需要预先设置面板CardLayout
,但我不希望它初始化它们,直到它们变得可见。这是必要的,以便将先前阶段的状态更改透明地传播到下一个阶段。
在我当前的代码中,我有:
cardsPanel.add(ReadMePanel.create(this), ReadMePanel.ID);
cardsPanel.add(LicencePanel.create(this), LicencePanel.ID);
cardsPanel.add(InstallationPathPanel.create(this), InstallationPathPanel.ID);
cardsPanel.add(
ExtractionProgressPanel.create(
this,
new NormalizedPath(appContext.getParameter("zipFilePath")),
new NormalizedPath(appContext.getInstallationDirectory().toString())
),
ExtractionProgressPanel.ID
);
此处InstallationPathPanel
允许用户选择与默认安装目录不同的安装目录。ExtractionProgressPanel
应该将某个 zip 文件提取到此目录。如果ExtractionProgressPanel
被延迟初始化,用户选择的路径将被传播到它,而无需我做任何额外的事情。
希望问题现在很清楚。