JLabel dinâmico  XML
Índice dos Fóruns » Interface Gráfica
Autor Mensagem
jschuler
HelloWorld

Membro desde: 25/05/2007 20:05:42
Mensagens: 14
Localização: Rio Grande do Sul
Offline

Bom dia colegas.

Estou tentando à algum tempo construir um JLabel dinâmico, alterar seu tamanho de acordo com o texto colocado nele, para que esteja sempre com o tamanho necessário parar mostrar seu conteúdo, sem as reticências.

Meu problema basea-se em descobrir o tamanho ideal, em pixels (altura e largura) para o componente, sendo que o label pode mudar de e conteúdo e fonte em tempo de excecução.

Para resolver isso, busco descobrir como calcular esse tamanho. Mas até agora não tive sucesso.

Alguém já fez algo semelhante, ou teria alguma idéia de como chegar nesse tamanho?

Muito obrigado.

Quando todas as alternativas se esgotarem, leia o manual de instruções.
[MSN]
jcvijr
JavaChild
[Avatar]

Membro desde: 15/04/2005 17:10:06
Mensagens: 111
Offline

Olá,

Eu já consegui obter o tamanho da String de acordo com o texto e a fonte usada por esse texto. Dê uma olhada na classe FontMetrics

Porém, eu usava um Graphics2D para fazer isso. Tente isso:


Ah, Java é uma ilha da Indonésia - um designer intrometido
[WWW] [MSN]
Giuliano Mega
JavaBaby

Membro desde: 22/08/2005 19:01:35
Mensagens: 94
Offline

jschuler,

Quem determina o tamanho do componente é o layout manager do container no qual ele foi inserido. Se você usar um BorderLayout, por exemplo, o JLabel não deve mostrar reticências até que o espaço do container pai se esgote (i.e., você vai obter o comportamento "dinâmico" que procura). Portanto, acho que a solução que você procura deve estar mais para o lado de escolher um layout manager adequado.

Se ainda assim você quiser saber o tamanho preferido do JLabel, no entanto, use:



Abraços,
RenataFA
Virtual Machine Man
[Avatar]

Membro desde: 24/08/2006 08:15:10
Mensagens: 698
Offline

Amigo, faço o que vc está querendo.

Numa determinada ocasição eu insiro dinamicamente os JLabels dentro de um JPanel. Em meu JPanel está configurado o layout como "Free Design", ou seja, tô usando o Matisse.

Ai, em tempo de execução eu crio os JLabels e adiciono no JPanel. Para conseguir o que vc quer, ou seja um "JLabel com autosize".. hehehe... basta simplesmente ao criar o JLabel NÃO DEFINIR SEU TAMANHO. Descobri que não definindo o tamanho ele fica um esquema "autosize".

Veja por ex, este JLabel eu tô especificando o tamanho, ele fica com um tamanho fixo na tela:


Já este eu não especifico o tamanho, oque faz com que ele ajuste o tamanho na tela de acordo com seu conteúdo:




Ambos os JLabels estão sendo adicionados no msm JPanel, usando o mesmo layout portanto, e funciona da forma como expliquei.

Boa sorte!

[]'s, Renata
[Email]
geidivan
JavaTeenager
[Avatar]

Membro desde: 11/09/2008 17:07:59
Mensagens: 172
Offline

Estava atrás disso, funcionou beleza.

Valeu Renata.

Geidivan J. de Brito
 
Índice dos Fóruns » Interface Gráfica
Ir para:   
Powered by JForum 2.1.8 © JForum Team