java 向txt文本写table_java-JTable绘制单元格中的内容(文本)

本文介绍了如何在Java的JTable中使用正则表达式进行搜索,并高亮显示匹配的文本。通过创建自定义渲染器,使用HTML包围文本并改变匹配部分的字体颜色。讨论了滚动行为以及全选或逐个查找的实现方式。
摘要由CSDN通过智能技术生成

我有一个JTable,我有一个在表行和表中实现搜索的方法,我使用正则表达式,并且我想用单元格中的正则表达式绘制(例如黄色)文本.我想绘制文本而不是单元格的背景,而只绘制与reg表达式匹配的单词部分.

我的搜索方法的代码是:

for (int row = 0; row <= table.getRowCount() - 1; row++) {

for (int col = 0; col <= table.getColumnCount() - 1; col++) {

Pattern p = Pattern.compile("(?i)" + search_txt.getText().trim());

Matcher m = p.matcher(table.getValueAt(row, col).toString().trim());

if (m.find()){

isFound = true;

table.scrollRectToVisible(table.getCellRect(row, 0, true));

table.setRowSelectionInterval(row, row);

break;

}

}

}

解决方法:

您将需要一个自定义渲染器来执行此操作.

默认渲染器是JLabel.因此,执行此操作的唯一方法是将HTML环绕在文本字符串周围,并更改要搜索的文本的字体颜色.您需要将搜索文本传递给渲染器,以便渲染器可以确定要突出显示的文本.

您发布的代码有一个问题,因为它将始终滚动到表格的底部.那么您的确切要求是什么.是否要一次突出显示所有单元格.或者,您是否只想拥有一个“下一步”按钮,即可找到带有文本的下一个单元格.在第一种情况下,您不想自动滚动表格.在第二种情况下,您将滚动表格.

另外,根据要求,您将需要重新绘制整个表(如果一次显示所有出现的情况)或仅重新绘制当前行(如果您具有下一个功能).

编辑:

通常,当您将文本添加到标签时,请使用:

label.setText("user1005633");

如果要突出显示任何包含“ 100”的文本,则需要执行以下操作:

label.setText("user1005633");

这就是包装的意思.

标签:java,search,swing,jtable,tablecellrenderer

来源: https://codeday.me/bug/20191010/1883189.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值