No meu caso ocorreu o seguinte:
Tenho JFrame e setei um JPanel Master
this.setContentPane(getPnlMaster());
onde
getPnlMaster();
desenha o meu JPanel principal:
private JPanel getPnlMaster() {
if (pnlMaster == null) {
lblImgFundo = new JLabel();
lblImgFundo.setBounds(new Rectangle(0, 0, 800, 600));
lblImgFundo.setIcon(getImage("/br/com/meuprojeto/images/minhaimagem.jpg"));
lblImgFundo.setFocusable(false);
pnlMaster = new JPanel();
pnlMaster.setLayout(null);
pnlMaster.add(getPnlCabecalho(), null);
pnlMaster.add(getPnlConteudo(), null);
pnlMaster.add(getPnlRodape(), null);
pnlMaster.add(lblImgFundo, null);
}
return pnlMaster;
}
como vocês podem ver no código acima, meu JPanel Master tem uma imagem de background e 3 JPanels por cima (cabeçalho, conteúdo e rodapé)…
Eu precisava deixar o JPanel de conteúdo transparente… isso está modelado assim pois na realidade são varios JPannels de conteudo que serão renderizados de acordo com o estado (status) da aplicação… em cada JPanel de conteudo tenho alguns componentes diferentes…
Resumindo, no getPnlConteudo(), precisava renderizar um JPanel transparente.
fiz assim:
private JPanel getPnlConteudo() {
if (pnlConteudo == null) {
pnlConteudo = new JPanel();
pnlConteudo .setLayout(null);
pnlConteudo .setBounds(new Rectangle(0, 90, 800, 410));
pnlConteudo .setBackground(new Color(255,255,255,0));
pnlConteudo .setOpaque(false);
pnlConteudo .setVisible(true);
}
return pnlConteudo;
}
Obs. Coloquei aqui somente um exemplo da ideia q utilizei para ficar facil de entender, na realidade meu código tem diversos componentes que não coloquei aqui para não complicar.
Conclusão,
Para tornar o JPanel transparente foi só fazer:
.setBackground(new Color(255,255,255,0));
Portanto o que controla a intensidade da transparencia é o 4° parametro na criação do objeto Color, no meu caso foi = 0, se o valor fosse = 150 seria semi-transparente
.setBackground(new Color(255,255,255,150));
Edit: ops, importante lembrar que o pnlConteudo .setOpaque(false); tambem é necessario, principalmente se você utilizar Look And Feel na aplicação
Abraços.