Общая стратегия решения сложных вычислительных задач - разбить их на небольшие четко определенные управляемые задачи.Разделяй и властвуй.Это также относится и к графическому интерфейсу: разбейте конструкцию на небольшие, легко разрабатываемые контейнеры.Например:

Вы можете увидеть четыре довольно простых и отличных контейнера с именами headerPane
, listPane
, inputPane
и buttonsPane
,mainPane
просто перекосит (содержит) эти четыре.Область inputPane
разделена на контейнеры, чтобы сделать макет простым.
Идея состоит в том, чтобы сделать каждый макет контейнера простым, легким для отслеживания и изменения.headerPane
может быть простым:
JPanel headerPane = new JPanel(); //uses flow layout by default
JLabel header = new JLabel("LUNA BOOKSTORE ORDER FORM", JLabel.CENTER);
headerPane.add(header);
buttonsPane
может быть простым:
JPanel buttonsPane = new JPanel(); //uses flow layout by default
buttonsPane.add(new JButton("CONFIRM"));
buttonsPane.add(new JButton("RESET"));
buttonsPane.add(new JButton("EXIT"));
Вы можете увидеть больше примеров применения этой стратегии здесь и здесь .