import java.awt.*;
import javax.swing.*;

public class LoginWindow extends JFrame{
    Dimension resolution = new Dimension();
    JPanel pnlTop = new JPanel();
    JPanel pnlContent = new JPanel();
    JPanel pnlBottom = new JPanel();
    
    //Top components   
    JLabel lblTopImg = new JLabel(); 
    JLabel lblTopText = new JLabel("Student");

    //Content
    CardLayout cartLayoutContent = new CardLayout();
    
    //JPanel pnlLastAccont = new JPanel();
    JPanel pnlLogin = new JPanel();
        JPanel pnlLoginContent = new JPanel();
        JPanel pnlLoginBot = new JPanel();

    JPanel pnlRegistration = new JPanel();
    
    //Bottom
    JPanel pnlBot = new JPanel(); // nie uzywany
        JLabel lblKonto = new JLabel("Nie masz konta?");
        JButton btnKonto = new JButton("Załóż Konto");
    
    /////////////////////////////
    public LoginWindow(Dimension r){
        resolution = r;
        this.setPreferredSize(resolution);
        this.setTitle("Menadżer");
        this.setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource("images/imgTopPanel.png")));
        this.setLayout(new BorderLayout());
        this.setResizable(false);
        
        generateTop();
        generateContent();
            //generatePnlLogin();
        generateBottom();
        
        this.add(pnlTop, BorderLayout.NORTH);
        this.add(pnlContent, BorderLayout.SOUTH);
        //this.add(pnlBottom, BorderLayout.SOUTH);

        //this.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
        this.pack();
    }
    
    private void generateTop(){
        pnlTop.setPreferredSize(new Dimension(resolution.width, 150));
        pnlTop.setBackground(new Color(26,26,26));
        pnlTop.setLayout(new BorderLayout());

        lblTopImg.setIcon(new ImageIcon(getClass().getResource("/images/imgTopPanel.gif")));
        lblTopImg.setPreferredSize(new Dimension(resolution.width,100));
        lblTopImg.setHorizontalAlignment(JLabel.CENTER);
        pnlTop.add(lblTopImg, BorderLayout.CENTER);
        pnlTop.add(lblTopImg);
    }
    
    private void generateContent(){
        pnlContent.setLayout(cartLayoutContent);
        pnlContent.add(pnlLogin, "Login");
        pnlContent.add(pnlRegistration, "Registration");
        
        pnlLogin.setLayout(new BorderLayout());
        pnlLogin.add(pnlLoginContent, BorderLayout.NORTH);
        pnlLogin.add(pnlLoginBot, BorderLayout.SOUTH);
         
        generatePnlLoginContent();
        generatePnlLoginBot();

        cartLayoutContent.show(pnlContent, "Login");
    }
    
    private void generateBottom(){
        pnlBot.setPreferredSize(new Dimension(280, 100));
        pnlBot.setBackground(Color.white);
        pnlBot.setLayout(new FlowLayout());

        lblKonto.setPreferredSize(new Dimension(100, 100));
        btnKonto.setPreferredSize(new Dimension(120, 30));
        
        pnlBot.add(lblKonto);
        pnlBot.add(btnKonto);
        pnlBottom.add(pnlBot);
    } 
    
    private void generatePnlLoginContent(){
        pnlLoginContent.setPreferredSize(new Dimension(280, 420));
        pnlLoginContent.setBackground(Color.red);
        
    }
    
    private void generatePnlLoginBot(){
        pnlLoginBot.setMaximumSize(new Dimension(280, 100));
        pnlLoginBot.setPreferredSize(new Dimension(280, 100));
        pnlLoginBot.setBackground(Color.blue);

    }
}

Wielkość okienka na razie jest 300 na 700 i to podaje do konstruktora. Chciałbym aby pnlLoginContent posiadał marginesy tak z 10 dlatego ustawiłem mu rozmiar 280, 420. Tylko to coś nie działa :(

Próbuje to tak zrobić dlatego że udało mi się osiągnąć ten efekt dla pnlBottom a tutaj coś nie idzie. Żeby zobaczyć to należy w konstrukorze odkomentować

this.add(pnlBottom, BorderLayout.SOUTH);

Pewnie cardlayout to powoduje a efekt chce osiągnąć taki:

taki efekt.png

Ps. Jak oceniacie mój porządek w kodzie bo chciałbym także się dowiedzieć czy dobrze to pisze.