Posicionamento do JLabel

16 respostas
L

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?

16 Respostas

R

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

:wink:

L

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

R

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

L

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

L

sim esta antes do add(JLabel)

L

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…

L

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!

R

tente isso

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);
  }
}
L

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:

// 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();
	}

Tchauzin!

L
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…

L

esta classe extende JFrame certo?

L

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

L

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();
 	}
}
L

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…

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!

L

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…

L

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!

Criado 31 de julho de 2007
Ultima resposta 31 de jul. de 2007
Respostas 16
Participantes 4