JTable 中的列的多个单元格渲染器?

2023-12-08

假设我有以下 JTable,按下按钮后就会显示:

      | Name
------+------------
True  | Hello World
False | Foo Bar
True  | Foo
False | Bar

我想渲染那些单元格最初对于 JCheckBox 来说是正确的,并且所有单元格都是最初false 表示不显示任何内容(无 JCheckBox)。用户可以选中或取消选中最初为 true 的单元格中的 JCheckBox,这会对我创建的图表执行某些操作。

现在,我的单元格渲染器在所有单元格中显示 JCheckBoxes,包括那些最初为 false 的单元格(它显示那些没有复选标记的 JCheckBoxes),但我不想在后者中显示任何内容。这是我的代码:

protected class CheckBoxCellRenderer extends JCheckBox implements TableCellRenderer {

  public Component getTableCellRendererComponent(JTable table, Object value,
      boolean isSelected, boolean hasFocus, int row, int column) {
    if (!(Boolean) tableModel.getValueAt(row, 0)) {
      NoCheckBoxCellRenderer renderer = new NoCheckBoxCellRenderer();
      return renderer.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
    }
    this.setSelected((Boolean) tableModel.getValueAt(row, 0));
    return this;
  }

}

protected class NoCheckBoxCellRenderer extends DefaultTableCellRenderer {

  public Component getTableCellRendererComponent(JTable table, Object value,
      boolean isSelected, boolean hasFocus, int row, int column) {
    this.setVisible(false);
    return this;
  }
}

In the if声明,我尝试使用this.setVisible(false)使用前NoCheckBoxCellRenderer,但它不起作用。我正在考虑使用多个单元渲染器来完成此任务。可以这样做吗?任何建议将不胜感激!


存储 Boolean.TRUE 作为真值。然后为假值存储一个空字符串。然后您将需要:

a) 重写 getCellRenderer(...) 方法,为单元格中找到的数据返回适当的渲染器。

b) 使包含空字符串的单元格不可编辑:

JTable table = new JTable(data, columnNames)
{
    public TableCellRenderer getCellRenderer(int row, int column)
    {
        if (column == 0)
        {
            Class cellClass = getValueAt(row, column).getClass();
            return getDefaultRenderer( cellClass );
        }

        return super.getCellRenderer(row, column);
    }

    public boolean isCellEditable(int row, int column)
    {
        Class cellClass = getValueAt(row, column).getClass();

        if (column == 0 && cellClass instanceof Boolean)
        {
            return true;
        }
        else
        {
            return false;
        }

        return super.isCellEditable(row, column);
    }

};

使用这种方法不需要自定义渲染器或编辑器。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JTable 中的列的多个单元格渲染器? 的相关文章

随机推荐

  • SqlAlchemy 具有多个条件“and_”超过两个值的情况?

    根据下面的问题 具有多个条件的 SqlAlchemy 案例 我该如何使用下面and 没有得到错误too many values to unpack expected 2 type case Jobs interview type adsfa
  • R 中的 3D 绘图,更好的可见表面

    With my data我使用以下代码创建 library rugarch library fGarch fd lt as data frame modelfit which density color lt rgb 85 141 85 m
  • 在每个页面上放置一个 django 登录表单

    如果用户未登录 我希望登录表单 来自 django contrib auth 的 AuthenticationForm 出现在我网站的每个页面上 当用户登录时 他们将被重定向到同一页面 如果有错误 错误将与表单显示在同一页面上 我想您需要一
  • 如何构建 AOSP 应用程序?

    我正在尝试从 AOSP 构建相机应用程序 我使用的是 UBUNTU 14 04 我按照官方文档中的指南进行操作 最后我执行 make Camera 我收到以下错误 including system media audio utils And
  • 如何在 `polars::prelude::DataFrame` 上使用 `ndarray_stats::CorrelationExt`?

    我正在尝试计算 Rust 中数据框的协方差 这ndarray stats板条箱定义这样的函数对于数组 我可以从 a 生成一个数组DataFrame using to ndarray 如果我使用文档中的示例 编译器会很高兴 a 但是如果我尝试
  • 错误:R 中文件路径中出现意外的字符串常量

    我正在尝试在 R 中运行此命令以运行函数 xlsxToR lt function C Users Nabila Dropbox IsolutionsProject ServiceRequestTickets zip keep sheets
  • C 中的后台进程(守护进程)不是 execvp() -ing

    因此 我尝试运行后台进程并从中执行 execvp 当我输入 cp path file var tmp 时 该进程并未复制该文件 这是我的代码供参考 void cmd bg char command pid t process id 0 pi
  • 将子文档添加到现有 Solr 6.4 集合文档会创建重复文档

    这个问题类似于Solr 不会覆盖 重复的 uniqueKey 条目 但我所处的情况是 我有大量现有文档已添加到集合中 没有子文档 并且我正在使用 独立而不是云 Solr 6 4 而不是 5 3 1 我们最近启用了子文档 以便我们可以存储更丰
  • 为什么 getSpeed() 在 android 上总是返回 0

    我需要从 GPS 获取速度和航向 然而我唯一拥有的号码是location getSpeed 为 0 或有时不可用 我的代码 String provider initLocManager if provider null return fal
  • Java WebStart 和认可的目录

    如何在 java webstart jnlp 文件中指定我的某些 jar 正在覆盖 JRE 内置实现 就像常规应用程序上认可的 lib 属性一样 似乎没有办法在网络启动中定义认可的目录 即使将 java endorsed dirs 属性定义
  • IntelliJ 问题 -> 无法创建名为“Main”的类

    标题说明了我的问题 我收到此错误消息 无法创建类无法解析模板 Class 错误信息 选定的类文件名 Main java 映射到非 java 文件类型 通过 TextMate 捆绑包支持的文件 有人对我如何解决这个问题有任何想法吗 请检查文件
  • 拆分字符串列值

    acctcode primekey groupby lt columns WDS 1 NULL lt values varchar FDS 2 NULL IRN 3 NULL SUM 4 1 2 3 STL 5 NULL WTR 6 NUL
  • 扩展 Asp.NET MVC3 控制器类

    我是一位经验丰富的 NET 程序员 也是一位使用 PHP 的 MVC 程序员 现在我是 MVC3 的新手 并尝试在其上构建我的第一个作品 因此我正在处理一些问题 对于初学者来说 如何扩展控制器类 有人可以指出我应该实施的指南 方法列表吗 T
  • 无法释放 C 中的 const 指针

    我怎样才能释放一个const char 我使用分配新内存malloc 当我尝试释放它时 我总是收到错误 不兼容的指针类型 导致此问题的代码类似于 char name Arnold const char str const char mall
  • Android 获取当前时间戳?

    我想像这样获取当前时间戳 1320917972 int time int System currentTimeMillis Timestamp tsTemp new Timestamp time String ts tsTemp toStr
  • Jenkins:根据相同 Jenkins 作业中的每个构建步骤结果发送电子邮件

    我只是想知道如何发送电子邮件电子邮件分机插件基于相同 Jenkins 作业的每个构建步骤结果 这是我的场景 我的 Jenkins 工作有 3 个构建步骤 构建步骤1 Pull latest code from github and Buil
  • 如何从 C++ 调用 fortran 例程?

    我希望从我的 C 代码中调用 fortran 例程 cbesj f 如何实现此目的 以下是我已完成的步骤 从 netlib amos 网页下载 cbesj f 以及依赖项 http www netlib org cgi bin netlib
  • 自动完成建议列表的 z-index 错误,我该如何更改?

    似乎我的自动完成列表的 z index 比我网站的某些元素低 所以它暴露不足 我应该编辑什么类 使用editCSS我播种这些类 并添加 我网站的z索引 但很少有不影响的是1 ui corner all ui menu item ingred
  • 如何打印第三列到最后一列?

    我正在尝试从 DbgView 日志文件中删除前两列 我对其中不感兴趣 我似乎找不到从第 3 列开始打印直到行尾的示例 请注意 每行都有可变数量的列 或更简单的解决方案 cut f 3 INPUTFILE只需添加正确的分隔符 d 即可获得相同
  • JTable 中的列的多个单元格渲染器?

    假设我有以下 JTable 按下按钮后就会显示 Name True Hello World False Foo Bar True Foo False Bar 我想渲染那些单元格最初对于 JCheckBox 来说是正确的 并且所有单元格都是最