У меня есть группа панелей, помещенная в CardLayout
где n th панель зависит от изменений состояния, вызванных (n - 1) th panel. Поскольку с CardLayout
, вы должны инициализировать и добавить все панели заранее. Таким образом, это затрудняет управление государством.Lazy-initialization enabled CardLayout?
Является ли Java или какая-либо сторонняя библиотека с открытым исходным кодом вариацией CardLayout
, которая инициализирует свои составляющие панели лениво, то есть они инициализируются незадолго до того, как они будут видны?
Edit:
Возможно, я не сформулируем проблему ясно. Дай мне попробовать снова.
I необходимо установить для установки панелей в 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
были лениво инициализированы, выбранный пользователем путь будет распространен на него, без каких-либо дополнительных действий.
Надеюсь, что проблема понятна.
«Поскольку с помощью« CardLayout »вы должны предварительно инициализировать и добавить * все * панели заранее». Кто сказал так? –
Я сильно второй, что утверждает Эндрю. При использовании CardLayout такого требования нет. –
Извините за неправильное указание проблемы. Точка акцента изменилась. Надеюсь, что это разъяснит. – missingfaktor