当前位置: 首页 > 知识库问答 >
问题:

更改行中特定单词的颜色JTable

公冶昆杰
2023-03-14

我试图弄清楚如何更改JTable中一行中单词的颜色。

例如,这是我的句子,在一行中;

dmpsrv日志“2013年3月12日星期二15:33:03”(格林尼治标准时间)(DB=SS@2)pid=662user=“s46”node=“B2-W4”执行时间=1(s)

每一行的结构都是相同的,我想用粗体显示用户名。

但是我不知道我该怎么做?有人给点诡计吗?

谢谢

共有1个答案

罗俭
2023-03-14

正如@mKorbel所述,您可以在Swing中使用HTML标记:如何在Swing组件中使用HTML

您还需要一个自定义单元渲染器:使用自定义渲染器

实例

这只是实施的一个示例(这并不完全是您所需要的),但您可以设法使其更加准确:

table.setDefaultRenderer(Object.class, new DefaultTableCellRenderer(){

    @Override
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {

        super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);

        String str = value.toString();
        String regex = ".*?user=\".*?\".*?";
        Matcher matcher = Pattern.compile(regex).matcher(str);
        if(matcher.matches()){
            regex = "user=\".*?\"";
            matcher = Pattern.compile(regex).matcher(str);
            while(matcher.find()){
                String aux = matcher.group();
                str = str.replace(aux, "<b>" + aux + "</b>");
            }
            str = "<html>" + str + "</html>";

            setText(str);
        }                
        return this;                
    }            
});

此渲染器在字符串中查找user=“whateverHere”模式。如果匹配,则将此子字符串的所有实例替换为相同的子字符串(按

更多关于regex的信息请参见本Q

正如DefaultTableCellRendererJLabel扩展而来(是的,是一个Swing组件!)HTML标记就可以做到这一点。

截图

 类似资料:
  • 你好,我有一个问题,我需要在红色的一些行的jtabl得到刷新每10秒。另外,要更改颜色的行集。我更新要更改为读取的行集,然后只要找到这些行,我就需要更改表中的行。我试过表格的单元格渲染器,但不能。如果任何人可以提出一些东西,我是开放的一切,希望得到一些代码作为例子。任何这样做的方式都是受欢迎的。我试着用这个函数玩W,但我不能添加要更改的行集…'''

  • 在开始之前,我查看了一些解决方案和文档。我似乎不明白为什么我的代码没有按我认为应该的方式工作。我已经扩展了DefaultTableCellRenderer,但我不相信它正在被应用——否则我就把事情搞砸了。 以下是我在发布此问题之前查看过的帖子/网站: Swing-是否可以在JTable单元格中设置特定文本的字体颜色? JTable细胞渲染器 http://docs.oracle.com/javas

  • 如何更改DataTable中单击行的颜色? 我有我的数据表和一个JavaScript来对单击行的数据执行一些操作: 谢谢

  • 问题内容: 我现在用于制作树表结构,我想动态更改特定单元格的颜色。如何更改电池的颜色? 我发现此代码可以更改颜色,但是无法正常工作。 这是代码: 问题答案: 使用荧光笔。

  • 问题内容: 我想更改与数组索引匹配的UITextView中特定文本的文本颜色。我能够略微修改此答案,但不幸的是,每个匹配短语的文本颜色仅更改了一次。 问题答案: 抱歉,我刚注意到您的消息。这是一个工作示例(在操场上测试):

  • 问题内容: 我想将matplotlib的标准颜色旋转更改为另一个颜色图。具体来说,我想使用“ gdist_rainbow”。那有可能吗,如果可以的话,我该如何实现呢? 我已经有自定义设置,例如 所以我想我只是在寻找要添加的正确键。 问题答案: 您需要为rcParameter提供一个颜色循环。一个颜色循环由颜色列表组成。可以根据颜色图进行选择。请参见下面的示例: