в Java Swing поля накладываются друг на друга
пытаюсь написать калькулятор:
import javax.swing.*;
import java.awt.*;
public class Window extends JFrame {
private final JFormattedTextField textField = new JFormattedTextField();
private final JPanel mainPnl = new JPanel();
private final JPanel layerOne = new JPanel();
private final JPanel layerTwo = new JPanel();
private final JPanel layerThree = new JPanel();
private final JPanel layerFour = new JPanel();
private final JPanel layerZero = new JPanel();
private final JButton btn0 = new JButton("0");
private final JButton btn1 = new JButton("1");
private final JButton btn2= new JButton("2");
private final JButton btn3 = new JButton("3");
private final JButton btn4 = new JButton("4");
private final JButton btn5 = new JButton("5");
private final JButton btn6 = new JButton("6");
private final JButton btn7 = new JButton("7");
private final JButton btn8 = new JButton("8");
private final JButton btn9 = new JButton("9");
private final JButton btnPlus = new JButton("+");
private final JButton btnMinus = new JButton("-");
private final JButton btnMultiply = new JButton("*");
private final JButton btnDivide = new JButton("/");
private final JButton invizBtn1 = new JButton("");
private final JButton invizBtn2 = new JButton("");
public Window() {
setTitle("Калькулятор");
add(mainPnl);
getContentPane().setLayout(new BoxLayout(getContentPane(), BoxLayout.Y_AXIS));
setSize(300,500);
setLocation(500,250);
setDefaultCloseOperation(EXIT_ON_CLOSE);
mainPnl.add(layerOne);
mainPnl.add(layerTwo);
mainPnl.add(layerThree);
mainPnl.add(layerFour);
mainPnl.add(layerZero);
//LayerOne
textField.setEditable(false);
textField.setColumns(15);
layerOne.add(textField);
//LayerTwo
layerTwo.add(btn7);
layerTwo.add(btn8);
layerTwo.add(btn9);
//LayerThree
layerThree.add(btn4);
layerThree.add(btn5);
layerThree.add(btn6);
//LayerFour
layerFour.add(btn1);
layerFour.add(btn2);
layerFour.add(btn3);
//LayerFive
layerZero.add(invizBtn1);
layerZero.add(btn0);
layerZero.add(invizBtn2);
setVisible(true);
}
public static void main(String[] args) {
Window win = new Window();
}
}
Все идет неплохо до момента с добавлением 5 слоя, он встает рядом с 4 слоем, вот скрин:

как это исправить?