Posicionamento do JLabel

Ola preciso posicionar um JLabel por cordenadas x,y estou tentando de todo jeito e não consigo… como faço para posicionar um JLabel por cordenadas?

provavelmente você não deixou o Layout do container como null
se estiver usando o JPanel tente colocar JPane.setLayout(null);

:wink:

se eu faço isso dai não aparece o meu JLabel no JPanel…

Verifique o codigo se a definição do layout esta antes do add(jLabel) isso aconteceu comigo.

quero que meu JLabel apareça no meu JPanel… e quero posicionalo por cordenadas x e y dentro do meu JPanel…

sim esta antes do add(JLabel)

se eu tento assim:

 public class TesteFrame extends JFrame {
	
	public TesteFrame(){
		JPanel panel = new JPanel();
		panel.setLayout(null);
		panel.add(new JLabel("Label Teste"));
		panel.setBackground(new Color(255,255,255));
		this.add(panel);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setVisible(true);
		this.setSize(300,300);
		this.pack();
	}
	
	public static void main(String args[]){
		
		new TesteFrame();
	}
	
}

não aparece nem o eu JLabel…
caso eu tire a linha que seta null ao Layout funciona… mas não tem como eu posicionar por x e y o meu JLabel…

Oi,
.setBounds(x,y,t,l);

Se mesmo assim não aparecer, deve ser porque o seu JLabel é maior do que o tamanho passado a ele… pois a cordenada ‘x’ é a distancia onde ele ficara na tela (esquerda para direita) o ‘y’ seria a altura (cima para baixo) o ‘t’ o tamanho da String e o ‘l’ o comprimento em altura…

Procure aumentar o ‘t’ ou o ‘l’…

Qualquer coisa, poste seu código aqui…

Tchauzin!

tente isso

[code]package tela;

import java.awt.Rectangle;

import javax.swing.JLabel;
import javax.swing.JPanel;

public class Class1 extends JPanel
{
private JLabel jLabel1 = new JLabel();

public Class1()
{
try
{
jbInit();
}
catch (Exception e)
{
e.printStackTrace();
}
}

private void jbInit()
throws Exception
{
this.setLayout(null);
jLabel1.setText(“jLabel1”);
jLabel1.setBounds(new Rectangle(165, 110, 34, 15));
this.add(jLabel1, null);
}
}
[/code]

Oi,
fiz uma analise do seu código,
acredito que a melhor maneira para ajudalo não seria dar
uma solução e um código feito… mãs, coloquei comentarios no exemplo abaixo que pode ser util daki pra frente… essa é minha maneira de ver as coisas:

[code] // Variaveis necessarias.
public Container
io_ct;

public JPanel
io_painel;

public JLabel
io_label;

/**
 * Método construtor, nele só definimos (para este exemplo) o tamanho.
 */
public Label()
{
	// Define o tamanho do frame.
	setSize(300,300);
	
	// Metodo responsavel por criar a janela.
	WindowGUI();
}

/**
 * Método responsavel por criar a janela.
 */
public void WindowGUI()
{
	// Define o container.
	io_ct = getContentPane();
	
	// Define o layout do container no qual vai ser adicionado o painel.
	getContentPane().setLayout(null);
	
	// Cria o painel.
	io_painel = new JPanel();
	io_painel.setLayout(null); // Define o layout do seu painel, para o JLabel atender as coordenadas.
	io_painel.setBounds(5,5,200,200); // Define o tamanho do painel.
	io_ct.add(io_painel); // Adiciona ao container (Que por sinal, é um null container)
	
	// Inicia a variavel label.
	io_label = new JLabel("Teste");
	io_label.setBounds(5,10,100,35); // Define o tamanho e a coordenada x,y,z..
	io_painel.add(io_label); // Adiciona ao painel com layout nullo.
	
	// Abre a janela.
	show();
}[/code]

Tchauzin!

 io_ct = getContentPane();

creio que getContentPane() não seja mais ultilizado no java 5 pode adicionar componentes diretos…
e uma duvida… pq io_ct é publica? sendo que atributos publicos não sao uma boa pratica de OO… e pq io_ct? este tipo de nomeclatura de variavel tbm não é boa…

esta classe extende JFrame certo?

analisei o meu codigo e ele e igual ao outro… nao vejo o pq do problema… alguem sabe onde esta o erro?

resolvi o problema… o problema é que se vc não setar a um Layout vc OBRIGATORIAMENTE tenque setar as cordenadas dele…
sendo assim eu fazia isto com o JLabel mas nao com o JPanel…


 import java.awt.Color;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

class Label extends JFrame{

 	/**
 	 * Método construtor, nele só definimos (para este exemplo) o tamanho.
 	 */
 	public Label(){
 		// Define o tamanho do frame.
 		setSize(300,300);
 		JPanel painel = new JPanel();
 		painel.setLayout(null); // Define o layout do seu painel, para o JLabel atender as coordenadas.
 		painel.setBounds(0,0,300,300); // Define o tamanho do painel.
 		painel.setBackground(new Color(255,255,255));
 		this.add(painel); // Adiciona ao container (Que por sinal, é um null container)
 		
 		// Inicia a variavel label.
 		JLabel label = new JLabel("Teste");
 		label.setBounds(150,150,100,35); // Define o tamanho e a coordenada x,y,z..
 		painel.add(label); // Adiciona ao painel com layout nullo.
 		
 		// Abre a janela.
 		this.setVisible(true);
 	}
 	
 	
 	public static void main(String args[]){
 		new Label();
 	}
}	

[quote=luistiagos] io_ct = getContentPane();

creio que getContentPane() não seja mais ultilizado no java 5 pode adicionar componentes diretos…
e uma duvida… pq io_ct é publica? sendo que atributos publicos não sao uma boa pratica de OO… e pq io_ct? este tipo de nomeclatura de variavel tbm não é boa… [/quote]

Amigo,
desculpa a minha ignorancia… mãs, se a minha nomemclatura nao é boa, o problema é meu… acho que eu entendo melhor com ela, e eu criei ela para isso…
não é uma boa pratica de programação criar uma variavel publica?! acredito de novo, que para este exemplo não seria problema…

o que é uma boa pratica de OO pra vc? painel.add(new JLabel("")); ?? acredito que não…

Bom, tentei resolver seu problema…
e acho que deu um pouco certo né.

em fim, fiquei feliz se deu certo
Estamos ai se precisar…

Tchauzin!

eh… aqui na empresa o pessoal e doente neste sentido de nomeclatura e coisas deste tipo… acabei “pegando” isso aqui na empresa…
mas valeu… sua solução foi uma excelente solução com ela identifiquei meu erro…

Sem problemas… e sem brigas =)
Estamos aqui para tentar ajudar, assim como sei
que quando postar uma duvida vc ira ajudar!

espero que esse “desintendimento” tende a ser uma coisa boa pro futuro… e que sejamos amigos, assim como o resto do pessoal aqui do guje o/

Tchauzin!