Pessoal ,
Bom dia a todos !
Estou tendo problemas para que minhas colunas colunas de um JTable tenham um tamanho especificado por mim.
Quando especifico as colunas no DefaultTableModel e crio o JTable com o modelo e uso tabela.getColumnModel().getColumn(indice).setPreferredWidth(50); em cada coluna que criei no modelo , a largura de cada coluna fica do modo que especifiquei.
Mas se depois em tempo de execução adiciono mais coluna no modelo ( com o metodo adicionaColuna ) e uso o tabela.getColumnModel().getColumn(indice).setPreferredWidth(50); nesta nova coluna todas as colunas ficam pequenas sem obedecer os valores que havia especificado:
Segue imagens em anexo da minha tabela
Segue o fonte abaixo:
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.Box;
import javax.swing.JScrollPane;
import java.awt.Dimension;
import javax.swing.JPanel;
public class Tabela {
String tipo_tabela;
Box box_tabela;
//JScrollPane scroll;
// Object[] colunas;
// Object[][] dados;
JTable tabela;
// JPanel panel;
DefaultTableModel modelo;
int indice_coluna;
public void init(String tipo) {
tipo_tabela = tipo;
box_tabela = Box.createHorizontalBox();
indice_coluna = 4;
criaTabelaCadastroNumerico();
} // fim do metodo init
private void criaTabelaCadastroNumerico() {
// panel = new JPanel();
Object[] colunas = {"Login","Cod", "Codinome", "Nome","Skill",};
// Object[][] dados = { {"99999", "12345678900","Smith da Silva Sauro Santos de Souza Cordeiro","21-136" } };
modelo = new DefaultTableModel(colunas,0) {
public boolean isCellEditable(int rowIndex, int mColIndex){
return false;
}
};
//modelo.addColumn("Skill rrrRetorno");
tabela = new JTable(modelo);
tabela.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
tabela.getColumnModel().getColumn(0).setPreferredWidth(50);
tabela.getColumnModel().getColumn(1).setPreferredWidth(100);
tabela.getColumnModel().getColumn(2).setPreferredWidth(300);
tabela.getColumnModel().getColumn(3).setPreferredWidth(440);
tabela.getColumnModel().getColumn(4).setPreferredWidth(100);
box_tabela.add( new JScrollPane(tabela));
//scroll = new JScrollPane(panel);
//modelo.addColumn("Skill Retorno");
adicionaLinha("87664","12345678900","Rafael Teixeira","Rafael Costa Teixeira","21-136","21");
setVisivel(false);
} // fim do metodo CriaTabelaCadastroNumerico
public void adicionaLinha(String login,String cod,String cod_nome,String nome,String skill,String skill1) {
modelo.addRow( new String [] {login,cod,cod_nome,nome,skill,skill1} );
}
public void adicionaColuna(String coluna) {
tabela.getColumnModel().getColumn(indice_coluna).setPreferredWidth(100);
modelo.addColumn(coluna);
indice_coluna++;
}
public void setVisivel(Boolean opcao) {
box_tabela.setVisible(opcao);
}
public Box get() {
return box_tabela;
// return scroll;
}
} // fim da classe tabela
Por favor alguem poderia me dar ajudar ?