【问题标题】:How to make JTable column contain checkboxes?如何使 JTable 列包含复选框?
【发布时间】:2011-02-23 11:51:45
【问题描述】:

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

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

目前我有一个自定义单元渲染器:

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 的好教程的链接。 非常感谢任何帮助:)

【问题讨论】:

    标签: java swing jtable jcheckbox tablecellrenderer


    【解决方案1】:

    这是一个简单相当详细的example,使用TableCellRendererTableCellEditor。另请参阅Concepts: Editors and Renderers

    附录:@Jay Askren 的观点很好。 Boolean.class 的默认渲染器(如教程中所述)可能就是您所需要的。

    【讨论】:

    • 谢谢。我没有遇到过那个特定的例子。发生了这么多事情......我会试一试
    【解决方案2】:

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

    public Class getColumnClass(int column)
    

    如果您希望该列可编辑,请为

    返回 true
    public boolean isCellEditable(int row, int column)
    

    JTable 会为您处理渲染。

    Another example is here.

    【讨论】:

    • +1 好点;简单一点就足够了。本教程描述了特定类的几个默认渲染器。
    • 已接受。非常感谢您提供的链接,这些链接非常简单,我可以关注/集成我当前的项目
    【解决方案3】:

    最简单的解决方案是使用 DefaultTableModel 并使用 Boolean 对象作为值。

    【讨论】:

    • 是的@Peter,但是如果我们希望 TRUE 值成为 ID 值,而 FALSE 仍然是 FALSE 值,我们是否可以通过向该复选框添加一些值 (ID) 来增强更多功能?
    【解决方案4】:

    正如彼得所说,使用扩展的 DefaultTableModel 类很容易,例如:

    class NewTableModel extends DefaultTableModel{
            public Class<?> getColumnClass(int columnIndex) {
                return getValueAt(0, columnIndex).getClass();
            }
        }
    

    【讨论】:

      【解决方案5】:

      在 Swing Designer 中将列类型设置为布尔值

      【讨论】:

      • 此解决方案假定 OP 正在使用某种类型的 UI 构建器
      猜你喜欢
      • 1970-01-01
      • 2016-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多