JLabel

1 resposta
M

olá,
sou iniciante em java
estou com problemas para solucionar um erro na execução desse programinha

import javax.swing.<em>;

import java.awt.</em>;

public class ExemploLabel extends JFrame{

JLabel rotulo1, rotulo2, rotulo3, rotulo4;

public ExemploLabel(){

super(EXEMPLO COM LABEL);

Container tela = getContentPane();

setLayout(null);

rotulo1 = new JLabel(Nome);

rotulo2 = new JLabel(Idade);

rotulo3 = new JLabel(Telefone);

rotulo4 = new JLabel(Celular);

rotulo1.setBounds(50,20,80,20);

rotulo2.setBounds(50,60,80,20);

rotulo3.setBounds(50,100,80,20);

rotulo4.setBounds(50,140,80,20);

rotulo1.setForeground(Color.red);

rotulo2.setForeground(Color.blue);

rotulo3.setForeground(new Color(190,152,142));

rotulo4.setForeground(new Color(201,200,100));

rotulo1.setFont(new Font(Arial,Font.BOLD,14));

rotulo2.setFont(new Font(Comic Sans MS, Font.BOLD,16));

rotulo3.setFont(new Font(Courier New, Font.BOLD,18));

rotulo4.setFont(new Font(Times New Roman, Font.BOLD,20));

tela.add(rotulo1);

tela.add(rotulo2);

tela.add(rotulo3);

tela.add(rotulo4);

setSize(400,250);

setLocationRelativeTo(null);

}

public static void main(String args[]){

ExemploLabel app = new ExemploLabel();

app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

}

compila porém não executa
mensagem:Exception in thread main java.lang.Erro: do not use ExemploLable.setLayout()
use ExemploLable.getContentPane().setLayout instead

quando uso assim:

Container tela = getContentPane();

tela.setLayout(null);

não  erro mais tb não exibe a janela.

quem pode me ajudar???

1 Resposta

F

Mateus, tu chamou o setLayout diretamente no frame, isso que ele está reclamando.
O negócio é usar o setLayout a partir do getContentPane.

Eu costumo usar o seguinte ‘template’ para criar telas.

public class TemplateTela extends JPanel {

	public TemplateTela() {
		// aqui vc cria a tela diretamente no JPanel
	}

	public static void main(String[] args) {
		JFrame frame = new JFrame();
		frame.setContentPane(new TemplateTela());
		frame.setSize(800, 600);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setVisible(true);
	}
}

Dessa maneira a tua aplicação está num JPanel, se um dia tu quiser rodar isso num Applet, rodaria
sem problema pois está baseado num JPanel e não num JFrame.

*edit: dessa maneira não precisa se preocupar com o getContentPane, de fato nem tem getContentPane no teu JPanel, basta
usa-lo diretamente

Criado 8 de julho de 2009
Ultima resposta 8 de jul. de 2009
Respostas 1
Participantes 2