java - 如何使 JTable 列包含复选框?

标签 java swing jtable jcheckbox tablecellrenderer

前言:我对 java 很糟糕,对 java ui 组件更糟。

我找到了几个关于如何向表格添加按钮的不同教程,但是我在添加复选框方面遇到了困难。我需要一个列来绘制一个默认勾选的文本框(我认为单元格渲染器可以处理),然后点击勾选框,取消勾选框,重绘所述框,并在我可以跟踪的地方触发事件。

目前我有一个自定义的 cellrenderer:

public class GraphButtonCellRenderer extends JCheckBox implements TableCellRenderer {
public GraphButtonCellRenderer() {
}
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
    if(isSelected)
        setSelected(true);
    else
        setSelected(false);
    setMargin(new Insets(0, 16, 0, 0));
    setIconTextGap(0);

    setBackground(new Color(255,255,255,0));
    return this;
}}

当前处理勾选框的绘制,但仅在选中该行时勾选和取消勾选该框。但我不知道如何处理这些事件。我真正要问的可能是一个链接,该链接指向一个关于如何将复选框干净地添加到 JTable 的好教程。 非常感谢任何帮助:)

最佳答案

无需创建自己的表格渲染器。 Here's a simpler example .只需创建一个自定义表模型,并为给定的列返回 boolean 类:

public Class getColumnClass(int column)

如果你希望列是可编辑的,返回true

public boolean isCellEditable(int row, int column)

JTable 会为您处理渲染。

Another example is here.

关于java - 如何使 JTable 列包含复选框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2901470/

相关文章:

java - 在 Eclipse 中自动生成方法响应

java - 比较java中的字母

java 使用 JPanel 进行屏幕截图预览

java - 我想将数据库中存储的文件名获取到jTable

java - 创建具有多个列标题和行标题的自定义 TableModel

java - 如何修复 GLSL 1.5 版和 ES 3.0 版之间的兼容性问题

java - 在配置全局设置的特殊情况下构建 Jacksons ObjectMapper

java - 获取KeyEvent的来源

java - 使用图像图标加载 .gif

java - 使用java swing表更新MySQL数据库值