Olá, eu li em muitos sites sobre jlayeredpanes, pelo que eu entendi é um objeto onde adicionamos vários jpanels e ele adiciona um sobre o outro(Se eu estiver errado por favor me corrijam!), porém vi bastante sobre o mesmo e vi esse tipo de estrutura https://docs.oracle.com/javase/7/docs/api/javax/swing/doc-files/JLayeredPane-1.gif, porém eu queria adicionar jpanels do mesmo tamanho um sobre o outro como se fossem camadas, e sem que os de cima tapassem os debaixo, então eu tentei assim:
`
package Mainmenu;
import java.awt.Font;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JLayeredPane;
import javax.swing.JPanel;
public class layer extends JFrame{
layer(){
super("Teste");
JLayeredPane pane = new JLayeredPane();
JPanel p = new JPanel();
JPanel p2 = new JPanel();
p2.setOpaque(true);
JLabel l = new JLabel("Thallysson");
JLabel l2 = new JLabel("Kein");
Font f = new Font("Comic Sans MS",Font.BOLD,50);
l.setFont(f);
l2.setFont(f);
pane.add(p,new Integer(1));
pane.add(p2,new Integer(2));
add(pane);
setVisible(true);
pack();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
}
public static void main(String[]args){
layer la = new layer();
}
}
`
Usei jlabels para testar, mais não funcionou, alguém pode me ajudar com essas dúvidas?
Você está criando as labels, mas não está as adicionando a nenhum panel:
JLabel l = new JLabel("Thallysson");
JLabel l2 = new JLabel("Kein");
Ficando assim, por exemplo:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.Font;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JLayeredPane;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
public class Layers extends JFrame {
private static final long serialVersionUID = 1L;
private JPanel contentPane;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Layers frame = new Layers();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public Layers() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
JLayeredPane pane = new JLayeredPane();
contentPane.add(pane, BorderLayout.CENTER);
pane.setLayout(null);
JLabel l1 = new JLabel("CAMADA 0");
l1.setForeground(Color.RED);
l1.setFont(new Font("Comic Sans MS", Font.BOLD, 50));
pane.setLayer(l1, 0);
l1.setBounds(82, 65, 315, 132);
pane.add(l1);
JLabel l2 = new JLabel("CAMADA 1");
l2.setFont(new Font("Comic Sans MS", Font.BOLD, 50));
pane.setLayer(l2, 1);
l2.setBounds(58, 80, 302, 148);
pane.add(l2);
}
}

Se estiver usando o Eclipse, o plugin do WindowBuilder facilita bastante trabalhar com interfaces.
Abcs!
1 curtida
Porque você atribuiu um cardlayout ao JLayeredPane? Antes eu estava tentando fazer com que uma aparecesse em baixo da outra, porém creio que a de cima tampou a de baixo não acha?

Tem razão, comi bola
, corrigi o código.
Abcs!
1 curtida
Ok, muito obrigado, ficou perfeito, e como eu marco a resposta como correta? Não tem botão:
1 curtida