Olá a todos,
Tenho um JScrollPane com um JTable dentro e estou tentando coloca-lo em um JFrame. Mas isso não ocorre na inicialização do programa, e sim a pedido do usuário.
O problema é que ao colocar o scrollpane no frame não é mostrada a tabela. Apenas depois de minimizar (ou algumas outras operações) é que a tabela é mostrada.
Imagino que isso signifique que o frame não foi redesenhado após adição do scrollpane.
O código a seguir replica o comportamento:
[code]import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
public class Teste extends JFrame{
JPanel painel;
public Teste() {
painel = new JPanel(new BorderLayout());
JButton botao = new JButton("Criar tabela");
botao.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
preencher();
}
});
painel.add(botao, BorderLayout.NORTH);
this.setContentPane(painel);
this.setSize(300, 300);
this.setVisible(true);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public void preencher() {
String[] colunas = {"A", "B"};
Integer[][] linhas = {{0, 0}, {1, 10}, {2, 20}, {3, 30}};
JTable table = new JTable(linhas, colunas);
table.setFillsViewportHeight(true);
JScrollPane scrollPane = new JScrollPane(table);
painel.add(scrollPane, BorderLayout.CENTER);
}
public static void main(String[] args) {
new Teste();
}
}[/code]
Já tentei usar o repaint(), mas não sei para que componentes devo enviar a mensagem de repaint.
Alguém saberia como resolver isso?
Grato pela atenção