1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Como fazer quebra de linha em um JLabel de texto + String?

Pessoal, tô com um problema ao tentar exibir o resultado de um for num JLabel. Acontece que tenho uma classe que me retorna várias sequências aleatórias por meio de um ciclo for, o qual se repete 7 vezes, sendo que ao final de cada uma dessas vezes a linha deve ser pulada. Nesse caso o JLabel exibe label.setText("Texto: " + variável);.

Quando eu adiciono o método específico dessa classe como argumento no JLabel a fim de exibir as sequências simplesmente o texto aparece em apenas uma linha, e pior, como o texto é muito grande para ser exibido em apenas uma linha (motivo pelo qual preciso da quebra de linha) não cabe nos limites da janela do Frame!

Pesquisei um pouco e vi que, incrivelmente, poderia usar html para fazer a quebra de linha, mas como vi e testei, serviu para quebrar linha apenas de texto, e não da variável em si.

Aqui está a classe do meu ciclo for:

package javaapplication1;

import java.util.*;

public class MegaScr {

    public String embaralharMegaminx() {

        Random r = new Random();
        ArrayList<String> lista = new ArrayList<>();

        String[] moves1 = {"R++ ", "R-- "};
        String[] moves2 = {"D++ ", "D-- "};
        String[] moves3 = {"U\n", "U'\n"}; //a linha sempre deve ser pulada ao ser gerado um destes
                                           //dois itens; 

        String[] m1 = new String[3];
        String[] m2 = new String[3];
        String[] m3 = new String[3];

        for (int j = 0; j < 8; j++) {
            for (int i = 0; i < 3; i++) {

                m1[i] = moves1[r.nextInt(2)];
                m2[i] = moves2[r.nextInt(2)];
                lista.add(m1[i]);
                lista.add(m2[i]);

                if (i == 2) {
                    m1[i] = moves1[r.nextInt(2)];
                    m2[i] = moves2[r.nextInt(2)];
                    m1[i] = moves1[r.nextInt(2)];
                    m2[i] = moves2[r.nextInt(2)];
                    m1[i] = moves1[r.nextInt(2)];
                    m3[i] = moves3[r.nextInt(2)];
                    lista.add(m1[i]);
                    lista.add(m2[i]);
                    lista.add(m1[i]);
                    lista.add(m2[i]);
                    lista.add(m1[i]);
                    lista.add(m3[i]);
                }

            }
        }

        return lista.toString();

    }

}

Na classe principal eu faço algo como isso:

package javaapplication1;

import javax.swing.JLabel;

public class MegaScr {

    public static void main(String[] args) {

        MegaScr scramble = new MegaScr();

        JLabel label = new JLabel();
        label.setText("Scramble: " + scramble.embaralharMegaminx());

    }

}

Tentei alterar o tipo de retorno do método para ArrayList mas também não deu em nada... Tentei excluir o ciclo for e adicionar as 7 vezes o método no label e após cada vez colocar um \n mas também não deu certo...

Enfim, dúvida que não tô conseguindo resolver, valeu!

  • Por que você não concatena o texto html com suas variáveis? Não sei se é a forma mais bonita, mas deveria funcionar.

    felipemartinsss   16 de jan de 2015
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

4 respostas

Não é a resposta que estava procurando? Procure outras perguntas com as tags java string arraylist arrays mainframe ou faça a sua própria pergunta.