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);
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!