Como exibir um texto no Textarea (java/netbeans) usando IFs encadeados?

Boa tarde,

Como posso exibir textos longos no Text Area ou no Text Pane através de IFs encadeados? O que estou querendo fazer é o seguinte: no JFrame inicial do meu programa, o usuário tem várias opções para escolher (check box), cada check box que ele selecionar será mostrado um texto diferente em um outro JFrame, o usuário não precisará editar o texto:

o código que fiz no outro JFrame para exibir o texto de acordo com o check box selecionado é assim:

telaInicial opcao= new telaInicial();

   if(opcao.jCheckBox1.isValid())
   {
        jTextPane1.setText("-----------------TEXTO-----------------");
   }

if(opcao.jCheckBox2.isValid())
{
jTextPane1.setText("-----------------TEXTO-----------------");
}

if(opcao.jCheckBox3.isValid())
{
jTextPane1.setText("-----------------TEXTO-----------------");
}

Mas está dando errado pq só mostra o resultado do ultimo if independente do check box escolhido. Poderiam me ajudar por favor? pois como podem perceber sou iniciante em java.

Use o método isSelected() ao invés de isValid().

mesmo trocando para isSelected(), continua exibindo apenas a ultima frase do ultimo if

Seu código é esse mesmo? Porque todos os textos são iguais: "-----------------TEXTO-----------------"

não é esse,é que os textos são bem longos e diferentes e por isso não postei, pesquisei um pouco e acho que o problema está em setText, parece que o setText só imprime a ultima string atribuída a ela. Você conhece algum outro método para exibir string?

Ah, entendi.
Posso ver como está setando os textos?

Você poderia gerar a String inteira antes e setar depois.

String texto = jTextPane1.getText();
texto += "-----------------TEXTO-----------------";
jTextPane1.setText(texto);
1 curtida

Ou StringBuilder

Esse mito (com base de verdade em situações específicas) de que StringBuilder tem melhor desempenho leva a que muita gente use quase sempre StringBuilder para concatenações quando, em casos como este, String terá de certeza exatamente o mesmo desempenho.

Exceto para concatenação dentro de loops, onde se deve usar o StringBuilder, todas as outras concatenações podem ser feitas com String. O compilador se encarrega de interpretar como se fosse StringBuilder.

Fica muito mais legível o código.

2 curtidas

Acho que até mesmo em loops, dependendo nem necessita…só se for algo de grande volume e tal. Pq realmente, o código fica muito mais legível e fácil manutenção.

2 curtidas

obrigada a todos pela ajuda, como o staroski sugeriu deu certo, mas acabei encontrando outro problema no código ,o método isSelected não está funcionando, ele não está recebendo o valor do check box quando é selecionado na outra classe (telaInicial), por isso não está exibindo o texto corretamente. Alguém sabe o que fazer neste caso?
Obs: todos check box estão como public.
telaInicial opcao= new telaInicial();

if(opcao.jCheckBox1.isSelected()==true){
String texto = jTextArea1.getText();
texto += “-----------------TEXTO1-----------------”;
jTextArea1.setText(texto);
}
if(opcao.jCheckBox2.isSelected()==true){
String texto = jTextArea1.getText();
texto += “-----------------TEXTO2-----------------”;
jTextArea1.setText(texto);
}
if(opcao.jCheckBox3.isSelected()==true){
String texto = jTextArea1.getText();
texto += “-----------------TEXTO3-----------------”;
jTextArea1.setText(texto);
}

Porque você está instanciando mais uma telaInicial?

Turma obriiiiiigadaaaa a todos mas com algumas pesquisas consegui resolver os problemas no código:)

1 curtida

O pessoal daqui é muito dedicado e atencioso.

De qualquer forma, seja bem vinda ao fórum. E lembre, quando tiver mais experiência, de também ajudar os novatos aqui.

Combinado?