jTable中的复选框?
Posted
技术标签:
【中文标题】jTable中的复选框?【英文标题】:CheckBox in jTable? 【发布时间】:2015-08-27 21:10:43 【问题描述】:我在表格的行中添加了一个复选框,但很遗憾我无法选择/取消选择它们。
我正在使用我在互联网上获得的自己的表格模型。
表格模型的代码:
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;
这个方法会填满表格:
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);
我可以使用哪个代码?另外,我把这段代码放在哪里??
【问题讨论】:
I've added a checkbox to rows on my table,
- 然后不要忘记“接受”答案 (***.com/questions/32255379/add-checkbox-to-jtable),这样人们就知道问题已经解决了。
对不起,我忘了。但是关于这个问题,我还有一个问题):
看看Concepts: Editors and Renderers和Using Other Editors
【参考方案1】:
但不幸的是,我无法选择/取消选择它们。
您没有在 TableModel 中实现 setValueAt(...)
方法,因此模型中的值永远无法更新。
我正在使用我在互联网上获得的自己的表格模型。
为什么要使用自定义 TableModel?您可以使用DefaultTableModel
。它正确地实现了setValueAt(...)
方法。它还有一个addRow(..)
方法,允许您动态更新模型。
您实际上是在 TableModel 中存储Boolean
对象吗?我没有看到您使用getBoolean()
从您的结果集中获取数据。只有在列中有布尔数据时才会使用复选框的默认渲染器/编辑器。
还可以查看:Can't create column with checkboxes in JTable,以更好地实现 getColumnClass()
方法。
如果您坚持使用自定义 TableModel,请查看您在上一个问题中提供的 Swing 教程链接。它显示了实现setValueAt()
方法的示例。
【讨论】:
我想你的意思是setValueAt
;)
@MadProgrammer,只是仔细检查... :)以上是关于jTable中的复选框?的主要内容,如果未能解决你的问题,请参考以下文章
Java Swing,尝试用图像图标复选框替换 JTable 中的布尔复选框