Como adicionar um objeto JLabel por cima de uma imagem Graphics, sem que fique um retângulo cinza em volta?

Fala ae pessoal, eu estou criando um menu de um programa, usando objetos da classe AWT(Graphics) e Swing(JFrame, JPanel, JLabel). Eu desenvolvi um código, onde a imagem de fundo é em Graphics e o texto/caixa de diálogo, são feitos em Swing. Só que eis o problema, quando esses objetos são adicionados por cima da imagem, eles ficam com um retângulo cinza em volta deles, ficando uma coisa feia, e eu gostaria que não tivesse isso, que fosse transparente, tornando assim o programa mais agradável esteticamente. Eis o código:

public static void tela() {
		screen.setPreferredSize(new Dimension(500,500));
		screen.pack();
		screen.setLocationRelativeTo(null);
		screen.setDefaultCloseOperation(screen.EXIT_ON_CLOSE);
		screen.setResizable(false);
		Dialogo();
		screen.setVisible(true);
	}
	
	public static void Dialogo(){
		ImageIcon icone = criarImageIcon("Sol.png","sol");
		pan1.setLayout(fl);
		dialogo1.setFont(fonteGrande);
		pan1.add(dialogo1);
		
		pan2.setLayout(fl);
		dialogo2.setFont(fontePequena);
		pan2.add(dialogo2);
		pan2.add(caixa);
		
		pan3 = new JPanel() {
			public void paintComponent(Graphics g) {
				super.paintComponent(g);
				Image img = icone.getImage();
				g.drawImage(img, 0, 0, this);
			}
		};
		pan3.add(pan1);
		pan3.add(pan2);
		
		screen.add(pan3);
	}
}

E aqui a imagem de como ficou: https://imgur.com/a/NiiczlV

Você tem que fazer um setOpaque(false) nesses objetos, aí o background será transparente, por default a propriedade opaque é true.

1 curtida

Opa, deu certo aqui! Valeu pela resposta rápida. Problema resolvido!

1 curtida