たくさんのパネルを配置しました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
、ユーザーが選択したパスは、私が特別なことをすることなく、そのパスに伝播されます。
問題が今明らかになっていることを願っています。