Boa noite!
Estou com dificuldades em colocar tabelas aninhadas verticalmente num scrollpane, ou seja, pesquisei muito na última semana e com informações deste fórum e de outras fontes, montei uma maneira meio confusa, porém funcional. O problema é que eu gostaria que ao terminar a apresentação de uma tabela iniciasse a outra sem espaço em branco entre elas e também não gostaria que a tabela mostrasse a barra vertical quando excede o espaço. Os dados apresentados nas tabelas são do banco de dados.
Já tentei com o GridBagLayout sem sucesso.
A seguir uma classe fictícia, representando o meu problema. Desde já agradeço.
Luiz Garpelli
package testescrollpane;
import java.awt.*;
import javax.swing.*;
public class Teste extends JFrame {
JPanel paneMestre;
JPanel pane;
JScrollPane spMestre;
JScrollPane sp[] = new JScrollPane[5];//Array de ScrollPane com 5 elementos
// Cria a janela principal:
public Teste() {
//Propriedade do Frame
this.setSize(1100, 700);
this.setBackground(Color.cyan);//cor de fundo cyan
this.setTitle("janela teste");//muda o labelTitulo da janela
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//fecha
this.setLocationRelativeTo(null);//centraliza
this.setResizable(false);//desabilita o redimensionamento da janela
this.getContentPane().setLayout(null);//
//fim da criação da janela principal
paneMestre = new JPanel(new GridLayout(5,1));//Novo GridLayout com 5 linhas e 1 coluna
//Cria os objetos scrolls e instancia tabela(int) com o parâmetro
sp[0] = new JScrollPane(tabela(20));
sp[1] = new JScrollPane(tabela(5));
sp[2] = new JScrollPane(tabela(2));
sp[3] = new JScrollPane(tabela(38));
sp[4] = new JScrollPane(tabela(9));
//adiciona os scrolls sp[] à panemestre
for (int i = 0;i < 5;i++){
paneMestre.add(sp[i]);}
//cria uma nova scroll e instancia a panemestre ao objeto
spMestre = new JScrollPane(paneMestre,
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,//mostra a barra de rolagem vertical
JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);//não mostra a barra de rolagem horizontal
pane = new JPanel(new BorderLayout());//cria o objeto pane
pane.setBounds(20, 60, 1040,600);//posicionamento na tela e tamanho da jpanel
pane.setBackground(Color.CYAN);//cor de fundo
pane.add(spMestre);//adiciona o objeto scroll spmestre à pane
getContentPane().add( pane );
}
public static void main(String[] args) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Teste().setVisible(true);
}
});
}
//metodo para criar objeto tabela
private JTable tabela(int row){
int col = 5;
String linhas[][] = new String[row][col];
JTable tabela = null;
String[] colunas = new String []{
"Coluna 1","Coluna 2","Coluna 3","Coluna 4","Coluna 5",};
for (int i = 0; i < linhas.length;i++){
for(int j = 0; j< linhas[i].length;j++){
linhas[i][j] = "";
}
}
tabela = new JTable(linhas, colunas);
tabela.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
return tabela;
}//fim tabela
}//Fim da Classe