Хотя я не уверен, как вы хотите, чтобы конечный результат выглядел, вот несколько моих советов:
В фрагменте, где вы добавляете панель предупреждения в JFrame
warningPanel.add(warningLabel);
contentPane.add(warningPanel);
pack();
contentPane - контейнер, возвращаемый JFrame.getContentPane ()
JFrames по умолчанию использует BorderLayout и т. Д.
contentPane.add(<someComponent>)
идентичен
contentPane.add(<someComponent>, BorderLayout.CENTER)
Вы также добавляете mainPanel таким же образом, и у вас не может быть двух компонентов с одинаковыми ограничениями, поэтому вместо этого установите warningPanel на BorderLayout.NORTH
contentPane.add(warningPanel, BorderLayout.NORTH)
А также удалите вызов pack () в этом фрагменте кода, так как вы вызываете его позже в своем коде.
Надеюсь, это поможет.
PS
Что касается построения графического интерфейса в Eclipse, этот предыдущий вопрос о подключаемых модулях Eclipse GUI Builder может пригодиться.Я не могу говорить за учебники по использованию Swing в Eclipse, но быстрый поиск в Google выкапывает это руководство с использованием проекта Eclipse Visual Editor