Jpanel com tamanho por porcentagem

Ola estou criando uma aplicação desktop onde teriam diversos jpanels em um jframe e gostaria de saber como colocar esses jpanels dinamicamente e outra coisa como colocar o tamanho do jpanel em porcentagem relativo ao jframe ou seja como no código abaixo em vez do panel.setSize(200,200); panel.setSize(50%,60%); tipo isso como faz? O jpanel quando adicionado sozinho como no código abaixo também não fica do tamanho desejado ele ocupa a tela inteira mesmo dando um panel.setSize(200,200); Desde ja obrigado pela ajuda

package br.com.java.main;

import java.awt.Color;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class Main extends JFrame {

	private static final long serialVersionUID = 1L;

	
	public Main(){
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setSize(500,500);
		setVisible(true);
	}
	
	private void iniciarComponentes(){
		
		JPanel panel = new JPanel();
		
		panel.setBackground(Color.RED);
		
		panel.setSize(200, 200); //deixar aqui tamanho por porcentagem relativa ao jframe e não a tela inteira como esta aparecendo 
		
		add(panel);
	}
	
	public static void main(String[] args) {
		
		Main teste = new Main();
		
		teste.iniciarComponentes();
		
	}
	
}

http://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html
http://docs.oracle.com/javase/tutorial/uiswing/layout/using.html
http://www.miglayout.com/

Ok vou dar uma olhada vlw

Eu tive que fazer isso, mas era com o tamanho JSpitPanel e não sabia como fazer e não achei um do jeito que eu queria, então eu fiz os cálculos pegando o tamanho da tela e consegui.

Fiz isso pra capturar o tamanho da tela.

frame.getSize(Toolkit.getDefaultToolkit().getScreenSize());
width = frame.getWidth();
height = frame.getHeight();

Esse código abaixo vai fazer que mesmo se o usurário alterar o tamanho da janela no meio da execução, ela vai atualizar.

public void updateWindow() {
        frame.addComponentListener(new java.awt.event.ComponentAdapter() {

            public void componentResized(java.awt.event.ComponentEvent evt) {
            }
        });
    }