Поскольку вы добавляете две JPanel к своей основной JPanel, обе эти панели должны вписываться в основную панель.
Если одна из внутренних панелей намного больше другой, главная панель будетотрегулируйте, чтобы соответствовать большему.
Например, комментируя эту строку:
chatbox.setPreferredSize(new Dimension(200,200));
приведет к тому, что текстовое поле останется на месте.Это связано с тем, что окно чата не приведет к изменению размера контейнера.
Также обратите внимание, что размер главной панели изначально не соответствует размеру основного фрейма, поскольку вы не установили размер главной панели.
Если вы установите размер connectPanel равным размеру вашего основного фрейма, connectPanel не будет автоматически изменяться при добавлении chatPanel (вследствие изменения размера mainPanel)
Такто, что вы можете сделать, это добавить среднюю строку в:
JPanel connectPanel = new JPanel();
connectPanel.setSize(640, 480);
mainPanel.add(connectPanel, "connectPanel");
, что, вероятно, решит вашу проблему.
Хотя это будет работать, я определенно рекомендую использовать MIG Layout для всего вашего дизайна GUI.Это сэкономит вам много времени, если вы потратите час на его изучение.Это также избавит вас от необходимости устанавливать размеры вручную (и, следовательно, избавит вас от необходимости переписывать половину кода GUI при каждом изменении дизайна).