Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.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
Java 将JXTable与MatchingTextHighlighter一起使用时高亮显示错误 基本问题:_Java_Swing_Swingx_Jxtable_Swingx Highlighter - Fatal编程技术网

Java 将JXTable与MatchingTextHighlighter一起使用时高亮显示错误 基本问题:

Java 将JXTable与MatchingTextHighlighter一起使用时高亮显示错误 基本问题:,java,swing,swingx,jxtable,swingx-highlighter,Java,Swing,Swingx,Jxtable,Swingx Highlighter,更改TableColumn的宽度时,该方法将参数Rectangle textR设置为旧值(或“之前的值”)。 如何获取当前(实际)矩形值 一些背景信息和错误修复: 我使用SwingLabs演示中的(示例为SearchDemo.java) 这是一个非常好的开始,只标记JXTable单元格中找到的字符。但是如果我将单元格内容的对齐方式从左侧更改为,则荧光灯的位置会出现一些问题: table.getColumnExt( 1 ).setCellRenderer( new DefaultTableRen

更改TableColumn的宽度时,该方法将参数
Rectangle textR
设置为旧值(或“之前的值”)。
如何获取当前(实际)矩形值


一些背景信息和错误修复: 我使用SwingLabs演示中的(示例为SearchDemo.java)

这是一个非常好的开始,只标记JXTable单元格中找到的字符。但是如果我将单元格内容的对齐方式从
左侧更改为
,则荧光灯的位置会出现一些问题:

table.getColumnExt( 1 ).setCellRenderer( new DefaultTableRenderer( null, SwingConstants.RIGHT ) );

table.getColumnExt( 1 ).setCellRenderer( new DefaultTableRenderer( null, SwingConstants.CENTER ) );
如果突出显示字符,则会出现三个错误:

  • 情况:JLabel的文本完全可见。
    问题是:列越宽(使用columnheader调整大小),越亮的字符会向右漂移(从匹配的字符中消失)

  • 情况:JLabel的文本部分可见(用省略号…)但突出显示的字符串完全可见。
    问题是:在调整列宽时,从一个像素到一个字符的荧光灯位置是错误的

  • 情况:JLabel的文本和突出显示的字符串部分可见(荧光灯应位于省略号上)
    问题:省略号上的荧光灯在调整列宽时宽度错误(从无像素到正确宽度)。
    这是唯一一个在左对齐列中也可见的错误(荧光灯的宽度总是正确的,但有时会向右跳)

  • 第一个bug可以通过在两行中注释掉
    textR.x
    来修复(从MatchingTextHighlighter.java中的第327行开始):

    出现了两个较小的问题:
    一种是,如果匹配区域从第一个标签字符开始,则荧光灯将从左开始一个像素。如果使用columnheader调整列的宽度,则第二个是在中心对齐的列中跳变的更亮的一个像素。
    这两个错误(加上RightToLeft错误)都可以通过这些更改来修复(从MatchingTextHighlighter.java中的第397行开始):

    第三个bug可以通过以下方法部分修复(更改XMatchingTextHighlighter.java中的第48行):

    现在,荧光灯总是从省略号的第一个像素开始,fix!:-)
    但是宽度在调整列大小时不断变化,错误!:-(

    在调试MatchingTextHighlighter.java中的第二个第三个bug(剩下的一半)之后,我认为

    String clippedText = SwingUtilities.layoutCompoundLabel(.....)
    
    将参数
    textR
    设置为旧值。调整列大小时,文本矩形的计算宽度似乎“落后一个事件”。因此,高亮显示的位置错误

    有人有办法把这个修好吗


    感谢阅读所有这些……< P/P>酷!没有意识到这些问题(有其他的,因为它不能处理RTOL)-感谢跟踪他们:-你会考虑贡献他们吗?提交一个问题不要忘记:看到你正在做更多的跟踪:记住图标必须被解释。在您的第一个修复(注释myTextR.x)中,突出显示在带有图标的左对齐标签中的错误位置。虽然没有尝试你最近的建议,但是谢谢你的评论!我应该贡献什么以及如何贡献?Bug报告还是我试图修复它们?最初我想把这个问题发布到java.net swinglabs论坛上。。。但在过去的3天里运气不佳。由于DNS出现故障,Ava.net被关闭。该问题已得到修复,但可能需要一段时间才能环游世界。希望看到您的固定类作为我创建的问题的附件,然后以您的名义提交

        return textR.x;//respect the icon and start the highlight at the beginning of the text not at 0
    } else if (horizAlignment == SwingConstants.RIGHT
            || (horizAlignment == SwingConstants.TRAILING && leftToRight)  //fix for rtol: ! deleted
            || (horizAlignment == SwingConstants.LEADING && !leftToRight))  //fix for rtol: ! added
    {
        return viewR.width - textR.width;
    } else if (horizAlignment == SwingConstants.CENTER) {
        return Math.round((viewR.width - textR.width) / 2f) - 1;  //round a float to prevent a one-pixel-jumping Highlighter 
    
    int end = /* myTextR.x + */ fm.stringWidth(text) + offset;
    
    String clippedText = SwingUtilities.layoutCompoundLabel(.....)