import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class Textos {
public JScrollPane Pagina(){
JTextArea TXT = new JTextArea("Olá Mundo!");
JScrollPane SCROLL = new JScrollPane(TXT);
SCROLL.setBounds(0,0,295,121);
return SCROLL;
}
}
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 ?
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.
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
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.
public Principal(){
setVisible(true);
setSize(300,199);
setTitle("Titulo da janela");
setResizable(true);
setLayout(null);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
Textos TE = new Textos();
add(TE.Pagina());
}
public static void main(String[] args) {
new Principal();
}
}
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
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.
public class Frame {
static JTextArea txa;
static JScrollPane scroll;
static JFrame frame;
static JPanel painel;
public Frame() {
txa = new JTextArea();
txa.setFont(new Font("Times", Font.BOLD, 14));
txa.setEditable(false);
txa.append("Coloque aqui o que voce quer que apareça na textarea");
scroll = new JScrollPane();
scroll.setVerticalScrollBar(new JScrollBar());
scroll = new JScrollPane(txa);
scroll.setViewportView(txa);
frame = new JFrame("");
frame.setResizable(false);
frame.getContentPane().add(scroll);
frame.setSize(400,500);
frame.setDefaultCloseOperation(2);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main (String[] args) {
new Frame();
}
}
Para colocar as importações presione Crtl + Shift + i, caso esteja usando NetBeans
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
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.