o padrão, jTable1
A JTable é, somente, um modelo. Não é possível adicionar ou remover nada diretamente da JTable, ela é estática.
A única maneira de manipular um objeto da classe JTable é definindo um table model.
Se ainda não fez isso, sugiro, fortemente, que o faça já.
E opte por criar um table model próprio.
hm, como poderia fazer esse jtable model?
ok, obg
// assim você inicializa sua JTable informando o TableModel que ela deve utilizar
JTable minhaJTable = new JTable(new MeuModelo());
Aqui está o pseudo-código da classe MeuModelo
utilizada no exemplo acima:
class MeuModelo extends AbstractTableModel {
/**
* A JTable vai chamar este método para obter a quantidade de colunas que ela tem
*/
@Override
public int getColumnCount() {
return <quantidade de colunas da tabela>;
}
/**
* A JTable vai chamar este método para obter o nome da coluna informada
*/
@Override
public String getColumnName(int coluna) {
return <nome da coluna informada>;
}
/**
* A JTable vai chamar este método para obter a quantidade de linhas que ela tem
*/
@Override
public int getRowCount() {
return <quantidade de linhas da tabela>;
}
/**
* A JTable vai chamar este método para obter o valor a ser apresentado na linhe e coluna informados
*/
@Override
public Object getValueAt(int linha, int coluna) {
return <valor a ser apresentado na posição (linha, coluna)>;
}
}
Mano, muito obg, vc me ajudou e muito mesmo, porem agora preciso saber qual code que posso colocar para que, quando eu clicar na linha da tabela ele ira identificar a coluna ID e pega esse valor e jogar no banco de dados.
Uma vez que a ordem das colunas pode ser alterada, não é uma solução muito viável.
O mais adequado é identificar qual é a linha selecionada, a partir daí, recupera o objeto correspondente e pega seu ID.
e com fazer isso?
A classe JTable oferece o método getSelectedRow(), correto? Este método devolve o número correspondente ao índice da linha selecionada (partindo de 0).
Com esse valor, você precisa ir até o seu table model customizado (agradeça ao @staroski) e, criar um método que devolva o elemento da enésima posição da lista que compõe o teu modelo. Como a interface List possui o método get(int x) que devolve o elemento, exatamente na enésima posição, é muito fácil.
Não entendi direito sorry.
Você já tem o método que implementa a ação do JButton clicado?
Se sim, você precisa
1 - Identificar qual foi a linha selecionada.
Isso pode ser feito pelo método getSelectedRow
int linha = jTable1.getSelectedRow();
É interessante validar se há uma linha selecionada, pois, caso o valor da variável linha seja -1, significa que nada foi selecioando.
2 - A partir do momento que você tem a linha selecionada, você vai até o table model e obtém o elemento que corresponde à linha em questão. Isso será feito graças ao fato de que a inerface List oferece o método get que recebe um inteiro como parâmetro e que devolve o elemento correspondente a posição solicitada, partindo de 0, de acordo com o tamanho da lista (quantidade de elementos).
Suponto que é uma lista de Pessoas, o método pode ser parecido com isso
public Pessoa recuperaPessoaPorLinha(int linha) {
Pessoa p = pessoas.get(linha);
return p;
}
A partir daí, é só prosseguir com o que deseja fazer.
Porém, eu preciso dizer que você deve, urgentemente, estudar coleções e a estrutura da JTable e de table model.
blz, e para colocar essa edição com base ao banco de dados?
Fera, deixa eu tentar te explicar de uma maneira que você consiga compreender e que não me faça parecer um cara (muito) chato:
O que você tentou fazer?
Veja, programar é mais que pegar um código pronto aqui, outro ali. É extremamente necessário que você coloque a mão na massa e faça.
O objetivo do guj é esclarecer dúvidas a partir de algo que você já fez.
Então, me mostre os códigos:
- Obtendo linha da JTable
- O teu table model
- O método que, a partir da linha selecionada, retorna o objeto
- A classe que faz conexão com o banco de dados
- O método que realiza o tal update que você está questionando.
Aí podemos ajudar, talvez não apenas eu, mas os demais participantes do fórum.
mano entenda. eu quero muito mostrar o code porem eu não sei colocar ele aqui, de forma da pagina toda, se eu souber eu coloco, se pah o projeto todo para poderem me ajudar.
Upa o projeto no github então.
ok.
Quais é a tela? E o table model? E o dao?
jtable acima
TelaInicial -> tela para inicialização e com um label que mostrar a conexão com o DB.
TelaEntrar -> (1) tela onde ira solicitar para o usuário selecionar.
Editar -> (1) tela onde se cadastra, altera e apaga os evento.
TelaEvento -> Após clicar no evento selecionado na TelaEntrar será onde todas as adição dos atleta, mostra relatório, apaga atleta editar atleta será referente a esse evento selecionado.
AtletaEd + TelaEditarAtleta + TelaCadastroAtleta( Essa tela foi descontinuada) ( todas as 3 tela são para o mesmo propósito) -> tela de cadastras, apaga e editar atleta referente ao evento selecionado na TelaEntrar.
TelaChaveLuta -> Onde ira mostrar as informação do atleta referente a caixa de combinação.