Olá,
Estou criando um método para definir um jTable pois, todas as vezes que preciso deste componente, faço manualmente as larguras de cada coluna. Está funcionando corretamente mas, esbarrei no problema que algum jFrame pode ter mais de uma jTable e a partir dai o meu método falha.
Alguém pode sugerir como posso fazer isso ? Gostaria por exemplo ao chamar o método: definejTable(nomeGrid, colunas, larguras) eu conseguisse usar o parâmetro nomeGrid passado para o método, para fazer os gets e sets do objeto jTable.
Bom dia @pavan.marcio!
Segue um código que utilizo para formatação na jTable:
Método de formatação que guardo em uma classe tools:
public void FormatarJtable(JTable tabela, int valores[]) {
DefaultTableModel modelo = (DefaultTableModel) tabela.getModel();
modelo.setNumRows(0);
if (modelo.getColumnCount() == valores.length) {
for (int x = 0; x < valores.length; x++) {
tabela.getColumnModel().getColumn(x).setPreferredWidth(valores[x]);
}
} else {
JOptionPane.showMessageDialog(null, "Erro ao formatar jTable! \n"
+ "Verifique os parâmetros passados!");
}
}
Dentro da sua view no método construtor você passa por parâmetro qual a jTable que deseja formatar, e o tamanho de cada coluna, lembrando que o tamanho é assumido em pixels:
tools.FormatarJtable(JTBPesquisa, new int[]{80, 200, 150, 100, 100});
tools.FormatarJtable(JTBConsulta, new int[]{80, 200, 100});
@Jonathan_Medeiros que bacana a sua sugestão! Resolvido!
Veja abaixo como eu estava fazendo as larguras (via String) e depois um split e ai não consegui acessar os gets e os sets doi jTable pela variável.
public void defineGrid(int colunas, String larguras){
String largura[] = larguras.split(Pattern.quote(","));
for (int i = 0; i < colunas; i++){
jTable1.getColumnModel().getColumn(i).setPreferredWidth(Integer.parseInt(largura[i]));
}
}
Muito obrigado!