简体   繁体   中英

CheckBox in jTable?

I've added a checkbox to rows on my table, but unfortunately I'm unable to select/deselect them.

I'm using an own Table Model that I got on internet.

Table Model's code:

import java.util.ArrayList;
import javax.swing.table.AbstractTableModel;
/**************/

public class ModeloTabela extends AbstractTableModel {
    private ArrayList linhas = null;
    private String [] colunas = null;

    public ModeloTabela(ArrayList lin, String[] col){
        setLinhas(lin);
        setColunas(col);
    }
    public ArrayList getLinhas(){
        return linhas;

    }
    public void setLinhas(ArrayList dados){
        linhas = dados;
    }
    public String[] getColunas(){
        return colunas;
    }
    public void setColunas(String [] nomes){
        colunas = nomes;
    }
    public int getColumnCount(){
        return colunas.length;
    }
    public int getRowCount(){
        return linhas.size();
    }
    public String getColumnCount (int numCol){
        return colunas[numCol];
    }

    public Object getValueAt(int numLin, int numCol){
        Object[] linha = (Object[])getLinhas().get(numLin);
        return linha[numCol];
    }

    public Class getColumnClass(int c) {
        return getValueAt(0, c).getClass();
    }

    public boolean isCellEditable(int row, int col) {
        return true;
    }
}

And this Method will fill the Table:

public void PreencheTabela(String sql, JTable jt1, JTextField j1){
        c.conexao();
        ArrayList dados = new ArrayList();
    String [] Colunas = new String[] {"STATUS", "ID", "FABRICANTE", "FORNECEDOR", "NOME", "CATEGORIA", "DATA DO CADASTRO", " CODIGO DE BARRAS", "QUANTIDADE"};

    c.executaSQL(sql);
    try { 
        c.rs.first();
        do{
        dados.add(new Object[]{c.rs.getInt("prod_id"),c.rs.getString("prod_fabricante"),c.rs.getString("prod_fornecedor"),c.rs.getString("prod_nome"),
            c.rs.getString("prod_categoria"),c.rs.getDate("prod_datacadastro"),c.rs.getString("prod_codbarras"), c.rs.getInt("est_quantidade")});
        j1.setBorder(BorderFactory.createLineBorder(Color.black));
    }while(c.rs.next());

    } catch (SQLException ex) {
        JOptionPane.showMessageDialog(null, "Erro!\n"+ex.getMessage());
    }
    ModeloTabela modelo = new ModeloTabela(dados, Colunas);
    jt1.setModel(modelo);
}

Which code can I use? Also, where do I put this code??

but unfortunately I'm unable to select/deselect them.

You didn't implement the setValueAt(...) method in your TableModel so the value can never be updated in the model.

I'm using an own Table Model that I got on internet.

Why are you using a custom TableModel? You can use the DefaultTableModel . It implements the setValueAt(...) method correctly. It also has an addRow(..) method that allows you to dynamically update the model.

Are you actually storing Boolean objects in the TableModel? I don't see you using getBoolean() to get the data from your ResultSet. The default renderers/editors for a check box will only be used when you have Boolean data in the column.

Also take a look at: Can't create column with checkboxes in JTable for a better implementation of the getColumnClass() method.

If you insist on using your custom TableModel, then take a look at the Swing tutorial link you were given in your last question. It shows and example of implementing the setValueAt() method.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM