MiGLayout nie rozwinie JPanel w dół

Jestem pewien, że niektórzy z was wiedzą, że próbuję stworzyć narzędzie alernatywne do kafelkowania, które jest open source. Zapytałem wcześniej, jakiego układu powinienem użyć, i zasugerowałem MiGLayout, który naprawdę kocham, ale w ogóle tego nie rozumiem. Mam również nadzieję dowiedzieć się czegoś na ten temat.Chciałbym, żeby ktoś wyjaśnił mi, co zrobiłem źle, oczywiście i co muszę zrobić, aby to poprawić.

Pozwólcie, że najpierw stwierdzę, co działa idealnie w moich oczach, ale może nie do końca.

JFramePozycje menu i menu

Pozwól mi teraz powiedzieć, co mi się nie podoba i nie schyla się do mojej woli.

JToolBar (Są luki, których nie chcę, są zaznaczone na czerwono)Oba JPanels (szerokość, którą prefektuje, ale nie wypełniają się do wysokości)

Moje pytanie brzmico mogę zrobić, aby to naprawić ijak mogę dopasować miglayout tak, aby po przesunięciu paska narzędzi układ nie spadł na kawałki?

Oto mój kod:

package main;

import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JToolBar;
import javax.swing.KeyStroke;

import net.miginfocom.swing.MigLayout;

public class GUI extends JFrame {

    // Window Vars //
    String title;
    int width;
    int height;

    // Mid Level componets //
    JMenuBar menuBar;
    JMenu file;
    JToolBar toolBar;
    JPanel map;
    JPanel sideBar;

    // Low Level componets //
    JMenuItem exit;

    JButton select;

    public GUI(String title, int width, int height) {
        this.title = title;
        this.width = width;
        this.height = height;
        this.makeInterface();
    }

    public void makeInterface() {
        // Setup JFrame
        this.setTitle(title);
        this.setSize(width, height);
        this.setLocationRelativeTo(null);
        this.setMinimumSize(new Dimension(700, 500));
        this.setVisible(true);

        this.setLayout(new MigLayout(
                "debug, fillx, gap unrel rel",  // Layout
                "[grow, fill][fill]",         // Column
                "[fill][fill]"));       // Row
        this.makeMenu();
        this.addToolBars();
        this.makePanels();
        this.setupActionListeners();
    }

    public void makeMenu() {
        this.menuBar = new JMenuBar();
        this.file = new JMenu("File");
        this.file.setMnemonic(KeyEvent.VK_F);
        this.menuBar.add(file);

        this.exit = new JMenuItem("Exit", KeyEvent.VK_E);
        this.exit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E, ActionEvent.ALT_MASK));
        this.file.add(exit);

        this.setJMenuBar(this.menuBar);
    }

    public void addToolBars() {
        this.toolBar = new JToolBar("Draggable");
        this.addToolBarButtons();
        this.add(toolBar, "span, height 20:35:50, wrap");
    }

    public void addToolBarButtons() {
        this.select = new JButton("Select");
        this.toolBar.add(select);
    }

    public void makePanels() {
        this.map = new JPanel();
        this.sideBar = new JPanel();

        this.add(map, "width 400:600:, flowy, growy");
        this.add(sideBar, "width 250:300:350, flowy, growy");
    }

    public void setupActionListeners() {
        this.exit.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.exit(0);
            }
        });
    }
}

questionAnswers(1)

yourAnswerToTheQuestion