Largura de um JLabel de acordo com texto

3 respostas
J

Boa dia a todos!
Estou com um problema em uma aplicação onde preciso fazer uma quebra de linha no texto de um JLabel, de acordo com a largura do painel.
Ou seja, se a palavra ultrapassar o tamanho da largura do painel, ocorre a quebra.
Estou usando o código abaixo, com
para fazer a quebra, mas ele nunca entra no if, pois width do label está dando sempre 0.
Tem alguma maneira de calcular essa largura do label?

Valeu!!

public String ajustaNomeTrack(String texto) {
		String auxTxt = "";
		JLabel Lbl = new JLabel();
		JLabel auxLbl = new JLabel();
		int larguraLabel = 0;
		String[] array = texto.split(" ");
		Lbl.setText(array[0]);
		auxLbl.setText(array[0]);
		FontMetrics fm = auxLbl.getFontMetrics(auxLbl.getFont()); //É Algo parecido com isso!
		for (int i = 1; i < array.length; i++) {
			larguraLabel = fm.getHeight() * array[i].length(); //Teria que ser getWidth(), mas não existe!
			String txtAnterior = auxLbl.getText();
			if (larguraLabel > tamanho) {
				Lbl.setText(Lbl.getText() + "<br>" + array[i]);
				auxLbl.setText(array[i]);
			} else {
				Lbl.setText(Lbl.getText() + " " + array[i]);
				auxLbl.setText(auxLbl.getText() + " " + array[i]);
			}
		}
		auxTxt = "<html>" + Lbl.getText() + "</html>";
		return auxTxt;
	}

3 Respostas

M

Não pode ser aplicada outra solução?

Por exemplo, para não permitir que sua janela fique menor que determinado tamanho, use o método setMinimumSize(Dimension) do seu JFrame.

J

Infelizmente nao! A largura do painel tem que ser fixa, e quando a concatenação de Strings no label ficar maior que a largura do painel, ocorre a quebra de linha.
Estarei alterando o código acima para vocês verem aonde cheguei.
Valeu!

J

Pessoal, era por aquele código mesmo que eu estava fazendo! Ao invés de getHeight(), era só colocar stringWidth(string)!

Obrigado pela atenção!
Até

Criado 30 de janeiro de 2009
Ultima resposta 30 de jan. de 2009
Respostas 3
Participantes 2