Tenho uma outra classe principal que adiciona SCROLL em uma janela, más ele não aparece na janela.
Quando minimizo a janela e depois maximizo novamente ela aparece normalmente.
O que pode estar acontecendo ?
Estou fazendo algo errado ?
Quando minimizo a janela e depois maximizo novamente ela aparece normalmente.
O que?
Sua pergunta não é simplesmente: como adicionar o JScrollPane a um JTextArea?
obs: corrija os erros
publicclassTxt{staticJTextAreatxa;staticJScrollPanescroll;staticJFrameframe;staticJPanelpainel;publicstaticvoidlistar(){txa=newJTextArea();txa.setFont(newFont("Times",Font.BOLD,14));txa.setEditable(false);txa.append("Coloque aqui o que voce quer que apareça na textarea");scroll=newJScrollPane();scroll.setVerticalScrollBar(newJScrollBar());scroll=newJScrollPane(txa);scroll.setViewportView(txa);frame=newJFrame("");frame.setResizable(false);frame.getContentPane().add(scroll);frame.setSize(400,500);frame.setDefaultCloseOperation(2);frame.setLocationRelativeTo(null);frame.setVisible(true);}psvm(Stringarguments){newInstancia.listar();}}
K
KJim12
Não o problema é que o meu JTextArea não apareçe na janela na hora da inicialização do programa entende?
Más ao clicar na janela para minimizar e depois maximizar novamente ai sim o JTextArea apareçe.
Eu não entendo o por que disso acomteçer.
Jonas_B_a_r_r_o_s
Com que tamanho você definiu seu JFrame?
Tente aumentar o JFrame com o mouse, asim que você abre ele. Isso parece muito obvio. Mas acredito que so em maximizar ou minimizar não iria ter relação com o codigo
K
KJim12
Meu JFrame tem 300,199.
Ele estava para não ser redimencionavel, Mas eu coloquei para ser redimencionavel novamente e quando movi com o mouse o JTextArea apareceu.
más eu queria que ele aparecesse ao iniciar o programa.
Jonas_B_a_r_r_o_s
Defina o seu JTextArea um pouco menor que o JFrame. Pelo que percebi ele já está sendo iniciado com seu programa. Caso queria ter certeza disso, só para garantir ainda mais você pode colocar o codigo relacionado ao JFrame e o JTextArea dentro do construtor do JFrame. Digo, por ex: textArea.setSize(300,400); e frame.setSize(330,430); e outros setters.
K
KJim12
import javax.swing.JFrame;
public class Principal extends JFrame{
publicPrincipal(){setVisible(true);setSize(300,199);setTitle("Titulo da janela");setResizable(true);setLayout(null);setLocationRelativeTo(null);setDefaultCloseOperation(EXIT_ON_CLOSE);TextosTE=newTextos();add(TE.Pagina());}publicstaticvoidmain(String[]args){newPrincipal();}
}
De uma olhada na minha classe Principal acho que o erro pode estar nela, ou eu estou fazendo algo de maneira muito não apropriada.
Lembrando que são duas classes a Textos la em cima e essa Principal
Jonas_B_a_r_r_o_s
Ta estranho. Melhor você colocar tudo em uma classe só, elas não precisam ficar separadas, já que você vai ter um JScrol, JFrame e JTextArea em uma janela apenas.
publicclassFrame{staticJTextAreatxa;staticJScrollPanescroll;staticJFrameframe;staticJPanelpainel;publicFrame(){txa=newJTextArea();txa.setFont(newFont("Times",Font.BOLD,14));txa.setEditable(false);txa.append("Coloque aqui o que voce quer que apareça na textarea");scroll=newJScrollPane();scroll.setVerticalScrollBar(newJScrollBar());scroll=newJScrollPane(txa);scroll.setViewportView(txa);frame=newJFrame("");frame.setResizable(false);frame.getContentPane().add(scroll);frame.setSize(400,500);frame.setDefaultCloseOperation(2);frame.setLocationRelativeTo(null);frame.setVisible(true);}publicstaticvoidmain(String[]args){newFrame();}}
Para colocar as importações presione Crtl + Shift + i, caso esteja usando NetBeans
K
KJim12
Sim eu separei em 2 classes pra não ficar muita coisa em uma classe só e me confundir.
Então eu não posso fazer dessa forma esse que é o problema ?
Por que quando eu faço tudo em uma unica classe funciona perfeitamente e separado não ?
Jonas_B_a_r_r_o_s
Coloque como static Pagina().
publicstaticJScrollPanePagina()
ve o que acontece
K
KJim12
Não mudou nada, continua sem aparecer.
E o eclipse sinalizou em amarelo o
add(TE.Pagina());
The static method Pagina() from the type Textos should be accessed in a static way
Jonas_B_a_r_r_o_s
Faz assim:
Tire a instancia de Textos e coloque:
add(Textos.Pagina());
Enfim, acho que isso não vai funcionar mesmo. Veja o exemplo que fiz, você não vai ficar confuso, pois você pode fazer comentarios, identação do codigo, e colocar separados o que for scroll, jframe e textarea.
A melhor forma de fazer, que eu acho é tudo dentro de uma classe só. Voce complica mais fazendo separado
K
KJim12
Eu fiz da maneira que você pediu e continua na mesma.
O problema apareceu pq
Eu não consegui encontrar outra maneira de usar meu textarea na classe Principal sen ter que instanciar a classe Textos, por isso coloquei para retornar o SCROLL ai sim eu consegui add o scroll na minha janela que estava em outra classe.
Da maneira que vc faz tudo em uma unica classe funciona perfeitamente, más se por acaso eu quiser usar um textarea que esta em outra classe como fazer de maneira correta?
Se eu fizer a mesma coisa com um JButton ele aparece sem problemas eu já comprovei esse problema e só com o textarea.