Структура программирования Java Swing: предполагается, что слушатели являются источником почти всех компонентов Swing?

Мой вопрос сводится к следующему: стандартная структура в программировании на Swing, чтобы дать слушателям контроль над новыми компонентами (например, новым JPanel) для отображения и ввода, а также дать слушателям этого нового компонента контроль над новыми компонентами для отображения и ввода, и так до бесконечности? Или же Java должна вернуться к какому-то объединяющему классу, который связывает все компоненты Swing вместе в процедурном порядке?

В настоящее время в моем приложении, которое использует только один JFrame, в моих слушателях передается мой первоначальный объект JFrame. в качестве параметра для всех моих JPanels, чтобы их слушатели могли вызывать removeall (), чтобы очистить кадр для новой JPanel. Например, короткий код следующим образом

public class MainFrame {
  JFrame jfrm;
  public MainFrame() {
    jfrm = new JFrame("Main Frame");
    JPanel mainPanel = new MainPanel(jfrm);
  }
}

public class MainPanel extends JPanel {
  public MainPanel(final JFrame mainFrame) {
    JButton example = new JButton("Example");
    example.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent le) {
            mainFrame.removeall();
            JPanel 2ndPanel = new 2ndPanel(mainFrame);
            mainFrame.add(2ndPanel);
            mainFrame.validate();
        }
    });
  }
}

Правильная ли это структура - где слушатели генерируют новые панели, а не какой-то объединяющий класс? Но если это так, как компилятор Java может добраться до mainFrame.validate (), если существует бесконечная каскадность слушателей? Я процедурный программист старой школы, пытающийся программировать Swing-приложение на Java, и я считаю, что, возможно, я не понял основные концепции программирования на Swing. Ждем любых полезных ответов, и спасибо заранее!

5
задан Andreas_D 19 August 2010 в 11:16
поделиться