import java.awt.Color;
import java.awt.FlowLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLayeredPane;
import javax.swing.JPanel;

/* Paineis do JFrame (em sequencia de niveis):
	- Root (painel principal: getRootPane())
	  é o painel padrão existente em todos os componentes.  
	- Content (painel de conteúdo: getContentPane())
	  é aqui que devem ser adicionados os componentes.
	- Layer (painel de layers: getLayeredPane())
	  adiciona componentes em camadas. Layers podem ser criados.
	- Glass (painel de vidro: getGlassPane())
	  é um painel transparente que fica sobre os demais.
*/

public class ExemploCamadas {

	public static void main(String[] args) {
		JFrame janela = new JFrame();
		janela.setSize(600, 400);
		janela.setLocationRelativeTo(null);
		janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		janela.setLayout(null);

		JLayeredPane painelLayers = janela.getLayeredPane();
		
		// layer 1
		JPanel layer1 = new JPanel();
		layer1.setSize(300, 300);
		layer1.setLocation(10, 10);
		layer1.setBackground(Color.LIGHT_GRAY);
		painelLayers.setLayer(layer1, 1);  // nivel 1: abaixo
		painelLayers.add(layer1);

		// layer 2
		JPanel layer2 = new JPanel();
		layer2.setSize(200, 200);
		layer2.setLocation(50, 50);
		layer2.setBackground(Color.MAGENTA);
		painelLayers.setLayer(layer2, 2);  // nivel 2: meio
		painelLayers.add(layer2);
	
		// layer 3
		JButton botao = new JButton("Botão");
		botao.setSize(100, 30);
		botao.setLocation(100, 150);
		painelLayers.setLayer(botao, 3);   // nivel 3: acima
		painelLayers.add(botao);
		
		janela.setVisible(true);
	}

}
