Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaSwing:Jtable只突出显示单元格中单词的一部分_Java_Swing_Jtable_Tablecellrenderer - Fatal编程技术网

JavaSwing:Jtable只突出显示单元格中单词的一部分

JavaSwing:Jtable只突出显示单元格中单词的一部分,java,swing,jtable,tablecellrenderer,Java,Swing,Jtable,Tablecellrenderer,嗨,这个问题很具体。上课时,我们必须制作一些图书馆程序 我将我的列表显示在一个JTable中,并且我实现了一个搜索窗口,该窗口也使用JTable…我制作了一个自定义的CellRenderer,当术语搜索包含在书的代码或标题中时突出显示 我现在的问题是整个词都加粗了……有没有可能只加粗这个词的一部分 现在,我在这个类中还有一个函数,它给出了单元格值中搜索项的开始和结束的索引。在getSearchIndexObject的String下的类末尾找到它 这是一个屏幕,在渲染器的代码下面,颜色的代码是分开

嗨,这个问题很具体。上课时,我们必须制作一些图书馆程序

我将我的列表显示在一个JTable中,并且我实现了一个搜索窗口,该窗口也使用JTable…我制作了一个自定义的CellRenderer,当术语搜索包含在书的代码或标题中时突出显示

我现在的问题是整个词都加粗了……有没有可能只加粗这个词的一部分

现在,我在这个类中还有一个函数,它给出了单元格值中搜索项的开始和结束的索引。在getSearchIndexObject的String下的类末尾找到它

这是一个屏幕,在渲染器的代码下面,颜色的代码是分开的

}


提前感谢您提供的任何提示或技巧。

文本组件可以具有样式文档,并通过指定颜色属性标记部分文本

使用HTML稍微便宜一点。任何文本组件,如单元渲染器默认提供的JLabel。HTML可能非常不完整

JLabel label = (JLabel) cellComponent; // Or new JLabel();
label.setText(
    "<html>An <span style='background-color: lightskyblue'>example</span> of HTML");

String highlight(String text, String sought) {
     text = StringEscapeUtils.escapeHTML4(text); // <, >
     sought = StringEscapeUtils.escapeHTML4(sought);
     return "<html>" + text.replace(sought, "<b>" + sought + "</b>");
}

您可以直接在DefaultTableCellRenderer上使用setText,这是相同的,不需要强制转换first@MadProgrammer是的,DefaultTableCellRenderer是它自己的组件。在这方面,OP的一些代码,如.setFont和component.setFont,可能表现得有点惊人的相同。但是component cellComponent=super.GetTableCellRenderComponent正在返回一个自身的实例,所以cellComponent==这是真的:P,所以在任何情况下都可以工作,我只是懒惰;html似乎不起作用…而且StringEscapeUtils可能需要一些导入,我找不到…谷歌也帮不上忙,我没有所需的libraries@Ronin825你到底做了什么?我已经尝试添加尾随标记,但即使这样也不起作用。
JLabel label = (JLabel) cellComponent; // Or new JLabel();
label.setText(
    "<html>An <span style='background-color: lightskyblue'>example</span> of HTML");

String highlight(String text, String sought) {
     text = StringEscapeUtils.escapeHTML4(text); // <, >
     sought = StringEscapeUtils.escapeHTML4(sought);
     return "<html>" + text.replace(sought, "<b>" + sought + "</b>");
}