в 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 слоем, вот скрин: Скрин

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


Ответы (0 шт):