如何删除JTable中选定行(第一列有复选框)的文本?

2024-01-01

我有一个 Jtable,第一列中有一个复选框。我想在选中复选框时对行文本添加删除线。 (例如,当我们的任务完成时,与我们在 microsoft Outlook 中所做的相同。)我尝试过使用 AttributeString,但无法做到这一点。

有人可以指导我解决它吗?

String strStrike; 
AttributedString as; 

public void setTextStrikeThrough() {
    for(int r=0;r< taskcells.length;r++) {
        if (ttable.getValueAt(r,0).equals(Boolean.TRUE)) { 
            for(int c=2;c<7;c++) {
                strStrike+=taskcells[r][c-1]; 
            }//end inner for as=new
            AttributedString(strStrike); 
            as.addAttribute(TextAttribute.STRIKETHROUGH,
                TextAttribute.STRIKETHROUGH_ON);
            as.getIterator(); 
        }//end if 
    }//end for       
}

我不知道在哪里调用这个方法。我想在选中该行的复选框时对该行的文本添加删除线。


我不知道 ActionListener 是否适用于 JTable 中的 JCheckBox,因为该复选框不是真正的按钮,而是复选框的呈现。也许使用桌子模型会有所帮助。例如,您可以使用 HTML 显示表格单元格中显示的字符串的删除线。例如,下面我创建了一个自定义 TableModel,它扩展了 DefaultTableModel,并保存带有 Boolean 对象的行,后跟我创建的 TextWrapper 类的对象,该类根据布尔值更改其 toString 结果。

e.g.,

import java.util.Vector;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;

public class StrikeThroughRow {
   public static final Object[][] DATA = {{Boolean.TRUE, "Monday", "fe"},
      {Boolean.FALSE, "Tuesday", "fi"}, {Boolean.TRUE, "Wednesday", "fo"},
      {Boolean.FALSE, "Thursday", "fum"}, {Boolean.TRUE, "Friday", "foo"}};

   public StrikeThroughRow() {

   }

   private static void createAndShowUI() {
      JTable table = new JTable(new StrikeThroughModel(DATA));
      JScrollPane scrollpane = new JScrollPane(table);

      JFrame frame = new JFrame("StrikeThroughRow");
      frame.getContentPane().add(scrollpane);
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.pack();
      frame.setLocationRelativeTo(null);
      frame.setVisible(true);
   }

   public static void main(String[] args) {
      java.awt.EventQueue.invokeLater(new Runnable() {
         public void run() {
            createAndShowUI();
         }
      });
   }
}

class StrikeThroughModel extends DefaultTableModel {
   public StrikeThroughModel(Object[][] data) {
      super(new String[]{"Check", "Work Day", "Giant Speak"}, 0);
      for (int i = 0; i < data.length; i++) {
         Vector<Object> rowVect = new Vector<Object>();
         rowVect.add(data[i][0]);
         if (data[i].length > 1) {
            for (int j = 1; j < data[i].length; j++) {
               rowVect.add(new TextWrapper(data[i][j].toString(), (Boolean)data[i][0]));
            }
         }
         addRow(rowVect);
      }
   }

   @Override
   public Class<?> getColumnClass(int columnIndex) {
      if (columnIndex == 0) {
         return Boolean.class;
      }
      return super.getColumnClass(columnIndex);
   }

   @Override
   public void setValueAt(Object value, int row, int column) {
      if (column == 0) {
         for (int i = 1; i < getColumnCount(); i++) {
            TextWrapper textWrapper = (TextWrapper) getValueAt(row, i);
            textWrapper.setStrikeThrough((Boolean) value);
            fireTableCellUpdated(row, i);
         }
      }
      super.setValueAt(value, row, column);
   }
}

class TextWrapper {
   private String text;
   private boolean strikeThrough = false;

   public TextWrapper(String text) {
      this.text = text;
   }

   public TextWrapper(String text, boolean strikeThrough) {
      this(text);
      this.strikeThrough = strikeThrough;
   }

   @Override
   public String toString() {
      if (strikeThrough) {
         return "<html><strike>" + text + "</html></strike>"; 
      }
      return text;
   }

   public void setStrikeThrough(boolean strikeThrough) {
      this.strikeThrough = strikeThrough;
   }
}

我敢打赌有更好的解决方案,包括为您的单元格创建自定义渲染器,但上面的代码提供了一个快速而肮脏的修复。

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

如何删除JTable中选定行(第一列有复选框)的文本? 的相关文章

  • Emacs 打字骨架对插入也许

    在 Eclipse 中 编辑 Java 代码时 如果我输入一个左括号 我会得到一对括号 如果我然后 输入 第二个括号 它不会插入额外的括号 我如何在 emacs 中得到它 Eclipse 编辑器足够聪明 当我输入闭括号时 它知道我刚刚完成了
  • 如何正确地将MapStruct与Eclipse集成? (包括Lombok java代理)

    我愿意在一些官方项目中使用MapStruct 所以我决定先对其进行一些测试 我需要让它与 eclipse 集成工作 并遵循 MapStruct 网站上提供的所有说明 但是 到目前为止还没有运气 有人成功实现了这种整合吗 如果是的话我可以缺少
  • Jackson反序列化SNS消息错误MismatchedInputException

    我正在编写一个通过 SNS HTTP 请求处理来自 Amazon Simple Email Service 的回调的功能 我想将亚马逊提供的消息解析为本地对象结构 问题是 SNS 将 JSON 消息包装成字符串 并且 Jackson 无法解
  • 什么是“非阻塞”并发?它与普通并发有何不同?

    什么是 非阻塞 并发 它与使用线程的普通并发有何不同 为什么不在所有需要并发的场景中都使用非阻塞并发呢 使用非阻塞并发有开销吗 我听说Java中可以实现非阻塞并发 我们是否应该在特定场景下使用此功能 将这些方法之一与集合一起使用是否有区别或
  • Java OR 运算符优先级

    如何在 Java 中以 if 的方式链接条件语句b是假的 不如不检查c If a and c是假的 并且b是真的 确实c会被检查吗 if a b c 我正在寻找 PHP 所拥有的类似功能 但两者之间存在差异OR and 爪哇 如果左操作数是
  • 使android listview布局可滚动

    我有一个 xml 文件 其布局为 ASCII 形式 ImageView TextView List
  • 如何从 Jackson 中的自定义解串器调用默认解串器

    我在杰克逊的自定义解串器有问题 我想访问默认序列化器来填充我要反序列化的对象 在填充之后 我将做一些自定义的事情 但首先我想使用默认的 Jackson 行为反序列化对象 这是我目前拥有的代码 public class UserEventDe
  • 注释处理器可以用于代码生成吗?

    假设我定义了一个名为 MyAnnotation 有一个班级X其声明为 MyAnnotation class X 现在在编译时我想检查所有带有注释的类 MyAnnotation并对更多需要在同一进程中编译的 java 源文件进行一些代码生成
  • 抽象方法实现与抽象方法重写。这两个对于抽象类意味着相同吗?

    我几乎要采取Java SE 8 程序员我 exam 1Z0 808 我正在使用这个学习指南 https www selikoff net java oca 8 programmer i study guide https www selik
  • 如何使用 Tomcat 启用浏览器缓存静态内容(图像、css、js)?

    如何使用 Tomcat 启用浏览器缓存静态内容 图像 css js 首选的解决方案是编辑 spring MVC 配置文件或 web xml 尝试 改变值
  • 如何在不打开浏览器的情况下查看 Android 应用程序中的网页?

    嘿 我正在开发一个 Android 应用程序 我想连接到该应用程序内的网络 不过 我在某种程度上尝试过 WebView 但它在我的目录中显示的文件很好 但当连接到 google com 时 它显示错误 然后我添加了这个文件
  • 码头无故停止

    我需要经验丰富的码头用户的建议 我在负载均衡器 亚马逊云 后面维护着 2 台 Linux 机器 使用 Jetty 9 0 3 有时我的 Jetty 容器会被 Thread 2 无故关闭 同时地 显示以下日志并且容器无故停止 没有错误 没有例
  • 使用 JPA 存储库保留 Spring Batch ItemWriter 的问题

    我对春季批次有疑问ItemWriter它依赖于 JPA 存储库来更新数据 这里是 Component public class MessagesDigestMailerItemWriter implements ItemWriter
  • 在大画布上滚动

    我需要一些帮助来了解滚动绘制到 Android 画布上的项目的基础知识 假设我想创建一个时间线 其中 0 处的时间是可视化的顶部 并且随着时间的增加 时间线继续呈现在上一个点下方 如果我想在 Android 上渲染它 我知道我可以通过重写
  • 未找到 GroovyEvaluator

    我会尝试在以下位置制作我的 PIE 3D 报告iReport 在我的 struts xml 中 我用这个来调用我的报告
  • 如何使用JSqlParser向sql添加where条件?

    我想用JSqlParser向sql添加where条件 例如 Before select from test table where a 1 group by c After select from test table where a 1
  • Android中计算两个时间之间的差异

    我有两个字符串变量 例如 StartTime 和 EndTime 我需要通过用 StartTime 减去 EndTime 来计算 TotalTime StartTime和EndTime的格式如下 StartTime 08 00 AM End
  • 如何找到 JAR:/home/hadoop/contrib/streaming/hadoop-streaming.jar

    我正在练习有关 Amazon EMR 的复数视角视频教程 我被困住了 因为我收到此错误而无法继续 Not a valid JAR home hadoop contrib streaming hadoop streaming jar 请注意
  • JAVAFX 缩放、ScrollPane 滚动

    I have JAVAFX application with zoom and scale as described here Scale at pivot point in an already scaled node https sta
  • 在Java中将32bpp图像转换为16bpp图像

    如何使用 Java 库将 32bpp 图像 ARGB 转换为 16bpp 图像 ARGB 出于我的好奇 在像素级别 这种转换有什么作用 如果我有一个保存像素值 包含所有通道 的 int 值 那么在转换发生后该 int 会有什么不同 32 位

随机推荐

  • 将 XDocument 绑定到 WPF 并仍然使用 XPath?

    这是一个由 2 部分组成的问题 1 是否可以在不使用 ObjectDataProvider 的情况下将 XDocument 绑定到 WPF 控件 这是我的代码片段 其中 XmlDocument 可以工作 但我无法使用 XDocument X
  • 使用不同中间件的 Compojure 路由

    我目前正在使用 Compojure 以及 Ring 和相关中间件 在 Clojure 中编写 API 我正在尝试根据路线应用不同的身份验证代码 考虑以下代码 defroutes public routes GET public endpoi
  • 地球上所有 MimeType 的列表,映射到文件扩展名? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有列出现有所有 mimeType 的资源 我发现了一些地方的 mimeTypes 少于 1000 个
  • 使用 React hooks 防止 React 重新渲染 D3 图表

    我一直分别使用 React 和 D3 现在有一个项目 我需要对应用程序的绘图功能进行低级别控制 基本上 当用户放大绘图时 我需要能够从数据库中获取更高分辨率的数据 反之亦然 我找到了一些结合使用 D3 和 React 的方法 我想尝试让我的
  • ByRef 参数类型不匹配”错误 VB6

    我是 VB6 和 spread 的新手 我的 VB 项目正在使用 spread 在进行 spread 初始化的表单中 VB 6 会抛出一个编译错误 By Ref Argument Type Mismatch 错误 是否是因为 spread问
  • 在python中查找对某个对象的所有引用

    在 python 中查找对象的所有引用的好方法是什么 我问的原因是看起来我们有 内存泄漏 我们正在从网络浏览器将图像文件上传到服务器 每次执行此操作时 服务器上的内存使用量都会与刚刚上传的文件的大小成比例地增加 该内存永远不会被 pytho
  • C# process.start,如何知道进程是否结束?

    在 C 中 我可以使用以下命令启动一个进程 进程 启动 程序 exe 如何判断程序是否仍在运行 或者是否已关闭 MSDN 系统 诊断 流程 http msdn microsoft com en us library system diagn
  • 在验证 w3c 的 facebook 元标记中没有属性“property”

    我们可以使用meta name fb admins 代替meta property fb admins 用于 w3c 验证 我正在回答这个问题 尽管这是一个老问题 因为我认为这对于将来想要获得这方面信息的人来说是有价值的 当埃文说它不会通过
  • Yii2 - 制作超链接以在语言之间切换

    Hello 在 Yii1 1 中 我可以在 siteController 中执行操作 然后使用 Yii app gt controller gt createUrl actionname array language gt new lang
  • Fedora OpenJDK 设置 JAVA_HOME

    我正在使用 Fedora 实际上是 Pidora 因为我试图在树莓派集群上设置 hadoop 我使用 ansible 在所有节点上安装了 oopenjdk 但是 当我尝试设置 JAVA HOME 环境变量时 我对以下文件夹感到非常困惑 us
  • C 函数名还是函数指针? [复制]

    这个问题在这里已经有答案了 我们来看看这段代码 include
  • 路径相关类型是类型投影吗?

    我现在正在深入阅读Scala 以下是这本书的摘录 所有路径相关类型都是类型投影 路径依赖型foo Bar被重写 作为foo type Bar由编译器 在 Scala 中 所有类型引用都可以编写为针对命名实体的项目 类型 scala Stri
  • React 功能组件:如何使用 componentDidMount() [重复]

    这个问题在这里已经有答案了 我有一个函数 从技术上讲 它是一个 React 函数组件 export default function Daw return lt gt div Hello world div gt 当然 我的普通函数不能有R
  • 如何将用纯 python 动态创建的按钮添加到用 Kivy 语言编写的 kivy 布局中?

    我的问题是 我需要基于可变数量的网格方块创建按钮网格 并将它们放置在网格布局上 并使用屏幕管理器将它们显示在屏幕上 我知道如何使用简单的 for 循环在纯 python 中执行此操作 但是我用 kivy 语言编写了程序的布局 并且我不知道如
  • 关于http劫持和keep-alive

    i use resp err http Get http example com 得到一个http Response 我想准确地写入http处理程序 但只有http ResponseWriter 所以我劫持了它 webConn webBuf
  • R ggplot直方图条形按降序排列

    我不知道如何使用 ggplot 使直方图的条形按降序显示 这是我的代码 其中包含每个人都可以使用的数据框 library ggplot2 library scales chol lt read table url http assets d
  • 从 ajax post 在 django 视图中创建多个对象

    我有以下模型 对象 C 被对象 B 包含 被对象 A 包含 我在模板中有一个动态表单 并使用 jQuery 函数 我可以向该表单动态添加多个字段 每组字段代表对象 B 或 C 当通过后期操作提交时 我想创建我的对象树 我的目标是在验证此模板
  • 如何使用 telegram bot api 在群聊中接收消息

    我的电报机器人在私人聊天中接收用户发送到我的机器人的消息 但不接收用户在群聊中发送的消息 任何用于获取群聊消息的选项 api Talk to botfather http telegram me botfather并禁用隐私模式
  • 如何在 eeePc 701 / Ubuntu Netbook Remix 1.6 (Lucid) 上构建 cabal-install

    不是编程问题 但我第一次看到这样的问题 UNR 1 6 基于Ubuntu 10 04 安装6 12 1版本的GHC 所以 为了构建 cabal install 0 8 2 我必须安装libghc6 parsec mtl network 和
  • 如何删除JTable中选定行(第一列有复选框)的文本?

    我有一个 Jtable 第一列中有一个复选框 我想在选中复选框时对行文本添加删除线 例如 当我们的任务完成时 与我们在 microsoft Outlook 中所做的相同 我尝试过使用 AttributeString 但无法做到这一点 有人可