tenho uma tabela e naprimeira coluna tenho o checkbox, cada linha da tabela tem um checkbox quero pegar o codigo da linha selecionada e colocar eim um array list
List<Cliente> lista;
ArrayList codigos;
JCheckBox Jcheckbox = new JCheckBox ();
aqui coloco elee dentro da tabela
TableColumn coluna_Jcheckbox = tabela.getColumnModel().getColumn(0) ;
coluna_Jcheckbox.setCellEditor( new DefaultCellEditor( Jcheckbox ));
aqui pego o id da linha selecionada
private int getid_cliente(){
if(tabela.getSelectedRow() == -1) {
JOptionPane.showMessageDialog(this, "Selecione uma linha da tabela.",
"ERRO", JOptionPane.ERROR_MESSAGE);
return 0;
}
DefaultTableModel modelo = (DefaultTableModel) tabela.getModel();
Integer id = Integer.parseInt(modelo.getValueAt(tabela.getSelectedRow(), 1).toString());
return id;
depois fiz um for do tamanho do retorno da minha lista da pesquiza
for(Cliente cli:lista){
if (Jcheckbox.isSelected() == true){
codigos.add(getid_cliente());
}
}
nao funciona quando clico no botao para executar essa funcao
Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException
Acho que este post pode lhe ajudar http://www.guj.com.br/posts/list/35542.java… considerando o que está escrito no post: se você colocar em uma célula um objeto tipo Boolean daí ele aparecerá como um checkbox. Depois quando ler os valores da tabela é só pegar o valor que a célula possui e se o ckeckbox estiver marcado você vai receber true, caso contrário false.
Resta saber se o código da linha selecionada estar mesmo na coluna cujo index é 1, veja a linha do seu código abaixo:
....
Integer id = Integer.parseInt(modelo.getValueAt(tabela.getSelectedRow(), 1).toString());
....
Se ele está acusando erro de “NullPointer”, significa que o valor que está na célula "tabela.getSelectedRow(),1 está nulo.
Outra coisa se voce está utilzando a instância “modelo” como referência do TableModel de sua tabela, então substitua “tabela.getSelectedRow()” por “modelo.getSelectedRow()”, assim:
....
Integer id = Integer.parseInt(modelo.getValueAt(modelo.getSelectedRow(), 1).toString());
....