Я хотел бы спросить вас об одном техническом аспекте создания GUI в Swing. Предположим, у меня есть JFrame
или JDialog
(неважно) с контентом, организованным во многих JPanels
(настройки, действия, отображение данных, диаграммы и т. д.) - все в одном фрейме.
Например: здесь
Что я сейчас делаю, так это определяю все компоненты в одном файле (назовем его MainPanel.java
) и организую их в JPanels
. A иметь отдельные методы для организации каждой панели
private void organizePanels() {
pnlSettings = createPnlSettings();
pnlActions = createPnlActions();
pnlChart = createPnlChart();
// ...
}
Каждый метод отвечает за настройку макета JPanel
, организацию компонентов внутри него и т. д. Когда у меня есть 3-4 несложных панели, это имеет смысл (я имею в виду вполне читаемый). Но если я создам более сложную структуру, она станет небольшим кошмаром для обслуживания (или хорошей отправной точкой для этого).
Вот почему я хочу использовать такой подход: - Для каждого JPanel
создайте отдельный класс - Каждый класс должен иметь средства доступа к своим внутренним компонентам (нажатие JButton
в JPanel
A должно привести к обновлению JCombo в другом JPanel
). - Связь между панелями должна каким-то образом обеспечиваться MainPanel.
Итак, в mainPanel у меня будут ссылки только на JPanel, а не на компоненты внутри них. Доступ к определенным данным будет немного дольше (pnlActions.getSaveButton.setEnabled(true)
вместо btnSave.setEnabled(true)
, но это, вероятно, естественное следствие. Я также могу сделать все компоненты в JPanel общедоступными.
Считаете ли вы такой подход правильным? Считаете ли вы, что я должен использовать второй подход все время или, может быть, мой первый подход подходит для не очень сложных структур?
Какой у вас опыт?