Я хочу добавить 3 JPanels, все на разном расстоянии друг от друга, которые заполняют панель содержимого / JFrame.
В вашем примере панели не разнесены на разные расстояния.Панели соединяются друг с другом.Так что все, что вам нужно сделать, это использовать панель с FlowLayout, которая использует горизонтальный зазор 0.
Ваш основной код может быть что-то вроде:
JPanel main = new JPanel( new FlowLayout(FlowLayout.CENTER, 0, 0) );
JPanel panel1 = new JPanel();
panel1.setPreferredSize( new Dimension(100, 100) );
panel1.add( new JButton() );
main.add( panel1 );
JPanel panel2 = new JPanel();
panel2.setPreferredSize( new Dimension(100, 100) );
panel2.add( new JButton() );
main.add( panel2 );
frame.add( main );
Учитывая, что вы найдете код макетакак это сбивает с толку, я бы сказал, что вы действительно не понимаете, как использовать менеджеры по расположению.И, как и всем остальным, я предлагаю вам потратить время на то, чтобы понять, как использовать менеджеры макетов в ваших интересах.
Кстати, использование нулевого макета НЕ делает вашу жизнь проще.Конечно, вы можете разместить компоненты именно там, где вы хотите, но вы удовлетворяете своему требованию, чтобы панели занимали все пространство панели содержимого?Вы не сможете использовать метод pack () для фрейма, потому что при использовании нулевого макета ваша «основная» панель не будет иметь предпочтительного размера, поэтому, когда вы сделаете фрейм видимым, все, что вы увидите, это заголовокБар и границы.Если вы попытаетесь вручную установить размер рамки, то да, вы знаете размер 3 панелей (300, х 100), но вы не знаете размер строки заголовка и границ.Таким образом, вы не сможете правильно рассчитать размер.
Понятие менеджеров компоновки может занять несколько минут, но оно того стоит.