Meyer, você atribuiu o novo modelo para a sua JTable?
Ex .: tbClientes.setModel(Modelo);
M
meyer
Marcio_Tostes fiz sim conforme abaixo.
ModeloTabela modeloTab = new ModeloTabela(dados, colunas); tblClientes.setModel(modeloTab);
M
Marcio_Tostes
Se você não está tento nenhuma exceção, acredito que faltou apenas atualizar as ocorrências da sua JTable para conseguir exibir, tente inserir essa linha de código no seu ModeloTabela, logo depois de adicionar uma linha.
this.fireTableDataChanged();
Esse this, é para referenciar a minha própria classe, e o método é responsável por gerenciar as ocorrências na JTable, se algum registro for excluído etc.
M
meyer
Marcio_Tostes
Fiz oque você sugeriu conforme abaixo, mas não deu certo.
Essa linha não faz sentido dentro do seu método construtor, na sua Classe ModeloTable você tem algum método para adicionar linhas? se tiver essa linha de código deveria ser inserida depois da linha adicionada, ex .:
public class ModeloTabela extends AbstractTableModel {
privateArrayListlinhas=null;privateString[]colunas=null;publicModeloTabela(ArrayListlin,String[]col){this.fireTableDataChanged();setLinhas(lin);setColunas(col);}/** * @return the linhas */publicArrayListgetLinhas(){returnlinhas;}/** * @param linhas the linhas to set */publicvoidsetLinhas(ArrayListlinhas){this.linhas=linhas;}/** * @return the colunas */publicString[]getColunas(){returncolunas;}/** * @param colunas the colunas to set */publicvoidsetColunas(String[]colunas){this.colunas=colunas;}@OverridepublicintgetColumnCount(){returncolunas.length;}@OverridepublicintgetRowCount(){returnlinhas.size();}publicStringgetColmnName(intnumCol){returncolunas[numCol];}@OverridepublicObjectgetValueAt(intnumLin,intnumCol){Object[]linha=(Object[])getLinhas().get(numLin);returnlinha[numCol];}
}
S
staroski1 like
Você não esqueceu de inserir sua JTable em um JScrollPane?
M
meyer
Boa noite,
Realmente não tinha adicionado minha Jtable em um ScrollPane.
Fiz isso, mas agora não mais os dados na minha JTable.
tblClientes.getColumnModel().getColumn(0).setPreferredWidth(25);tblClientes.getColumnModel().getColumn(0).setResizable(false);tblClientes.getColumnModel().getColumn(1).setPreferredWidth(180);tblClientes.getColumnModel().getColumn(1).setResizable(false);tblClientes.getColumnModel().getColumn(2).setPreferredWidth(120);tblClientes.getColumnModel().getColumn(2).setResizable(false);tblClientes.getColumnModel().getColumn(3).setPreferredWidth(180);tblClientes.getColumnModel().getColumn(3).setResizable(false);tblClientes.getColumnModel().getColumn(4).setPreferredWidth(180);tblClientes.getColumnModel().getColumn(4).setResizable(false);tblClientes.getColumnModel().getColumn(5).setPreferredWidth(100);tblClientes.getColumnModel().getColumn(5).setResizable(false);tblClientes.getColumnModel().getColumn(6).setPreferredWidth(120);tblClientes.getColumnModel().getColumn(6).setResizable(false);tblClientes.getTableHeader().setReorderingAllowed(false);tblClientes.setAutoResizeMode(tblClientes.AUTO_RESIZE_OFF);// NÃO DEIXA REDOMENCIONAR A TABELAtblClientes.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);// DEIXA SELECIONAR APENAS UM DADO NA TABELA POR VEZ//Aqui adicionei minha JTable ao ScrollPanescroll.add(tblClientes);
S
staroski
E tem dados na lista que você está passando para o TableModel?
M
meyer
Sim, quando eu não coloco a JTable no JScrollPane os dados aparecem na Jtable normalmente, so não aparece os nomes das colunas.
S
staroski
Estranho, algum detalhe estamos deixando passar em branco.
Tens como postar o código completo da sua tela?
J
Solucao aceita
jacoboliveira1 like
ai ta errado, vc nao esta sobrescrevendo o metodo que devolve o nome da coluna, você escreveu errado o certo é
publicStringgetColumnName(intnumCol){}
M
meyer1 like
Jacoboliveira,
Era isso mesmo, obrigado mesmo.
E agradeço também ao amigos Marcio_Tostes e staroski vocês são muito legais.