gpt4 book ai didi

java - 延迟初始化启用了 CardLayout?

转载 作者:行者123 更新时间:2023-12-02 00:21:27 26 4
gpt4 key购买 nike

我在 CardLayout 中放置了一堆面板,其中第 n 面板取决于 (n - 1)th 面板。由于使用 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 被延迟初始化,用户选择的路径将被传播到它,而无需我做任何额外的事情。

希望问题现在已经解决了。

最佳答案

您可以在调用 show 方法之前初始化面板并将其添加到 CardLayout 中,因此没有问题。

编辑

因此,在您现在调用 CardLayout#show 的位置,您可以先执行 add,然后执行 show

由于您似乎正在尝试创建向导,因此following article可能是一个很好的起点

关于java - 延迟初始化启用了 CardLayout?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10896002/

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