问题标签 [swingx-highlighter]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - JXTable - 过滤表后的荧光笔
信息 - 为了更好的格式,我在整个发布过程中使用了代码格式。
java - 将 JXTable 与 MatchingTextHighlighter 一起使用时突出显示错误
基本问题:
在更改 TableColumn 的宽度时,该方法 SwingUtilities.layoutCompoundLabel(..)
将参数Rectangle textR
设置为旧值(或“之前的值”)。
我怎样才能获得当前(实际)矩形值?
一些背景信息和错误修正:
我使用 SwingLabs-Demos 中的MatchingTextHighlighter.java(示例是 SearchDemo.java)
仅在 JXTable 单元格中标记找到的字符是一个非常好的开始。但是如果我将单元格内容的对齐方式从更改为LEFT
:
或者
如果突出显示字符,则会出现三个错误:
情况:JLabel 的文本完全可见。
问题:列越宽(使用列标题调整大小),荧光笔越向右漂移(远离匹配的字符)。情况: JLabel 的文本部分可见(用省略号绘制...),但突出显示的字符串完全可见。
问题:在调整列宽时,荧光笔位置从一个像素到一个字符是错误的。情况:JLabel 的文本和突出显示的字符串部分可见(荧光笔应该在省略号上)
问题:省略号上的荧光笔在调整列宽时宽度错误(从无像素到正确宽度)。
这是在左对齐列中也可见的唯一错误(荧光笔始终具有正确的宽度,但有时会跳到右侧)。
第一个错误可以通过注释掉textR.x
2 行来修复(从 MatchingTextHighlighter.java 中的第 327 行开始):
出现了两个较小的问题:
一个是如果匹配区域从第一个标签字符开始,则荧光笔开始向左多一个像素。如果使用列标题调整列的宽度,则第二个是在中心对齐的列中突出显示一个像素的跳跃。
两者(加上 RightToLeft-Error)都可以通过这些更改来修复(从 MatchingTextHighlighter.java 中的第 397 行开始):
第三个错误可以通过(更改 XMatchingTextHighlighter.java 中的第 48 行)部分修复:
现在荧光笔总是从省略号的第一个像素开始,修复!:-)
但是在调整列大小时宽度会不断变化,错误!:-(
在调试了MatchingTextHighlighter.java 中的第二个和(剩下的一半)第三个错误之后,我认为对实用程序方法的调用
将参数textR
设置为旧值。在调整列大小时,文本矩形的计算宽度似乎是“一个事件落后”。正因为如此,荧光笔的位置是错误的。
有没有人有办法解决这个问题?
感谢您阅读所有这些...
java - SwingX JXTable:使用 ColorHighlighter 根据“行对象”为行着色
我正在使用 JXTable,并且我知道如何基于 DefaultRenderers for JTable 执行此操作,但我想知道如何以基于 HighlighterPipeline 的 JXTable 友好的方式执行此操作。
我有一个显示在表格中的对象列表,每一行代表一个对象。我想将显示某种类型的对象的行着色为不同的颜色。
看起来我应该使用ColorHighlighter。但我找不到这方面的例子,除了像“每隔一行着色”这样的简单荧光笔或类似的东西。
我需要行号,因为在 JTable/TableModel 范例中没有“行对象”之类的东西,但如果我能做到这一点,我可以轻松测试谓词并返回真/假来告诉荧光笔是否启动.
有人可以帮我找出正确的方向来让它发挥作用吗?
java - 如何使用 swingx 1.6 突出显示 JTable 中的每一行
我需要突出显示我的 JTable 中的每一行。使用旧版本的 swingx 可以这样做:
但是现在,对于 swingx 1.6,方法setHighlighters()不能接受这些参数。它说“JXTable 类型中的方法 setHighlighters(Highlighter...) 不适用于参数 (HighlighterPipeline)”
那么我怎么能用新的swingx呢?
java - 突出显示 JXTreeTable 行
我编写了以下代码来突出显示 JXTreeTable 中的一行,
它不工作。请帮助
java - 如何在 SwingX 中使用相对单元格突出显示?
我想突出显示 org.jdesktop.swingx.JXTreeTable 中相对于内部值的单元格,例如“突出显示(扩展)”下的 SwingX 展示中:
展示中提供了一些代码,但我无法让它工作,它没有突出显示任何内容。我无法真正理解荧光笔在哪里绑定到值(可能提供的代码不完整)。也没有可用的文档。
以下是展示中的代码:
这是我的代码:
TreeFrame.java
我从示例中获取了相关的代码片段,并根据我的要求对其进行了更改。我的 RelativePainterHighlighter 类与展示中的完全一样。
这是我的 ProfileThreadElement 类:
ProfileThreadElement.java
还有我的树表模型:
NoRootTreeTableModel.java
我认为最大的问题是我不知道在哪里调用 TreeFrame.setCurrentDuration(...) 方法。展示演示中缺少此内容。有没有人有相对突出的工作?
任何帮助表示赞赏,在此先感谢!
PS:如果我遗漏了什么或者您需要更多信息,请告诉我!
java - 如何使用 SwingX 的 Highlighter 返回不同的渲染器组件?
我注意到 SwingX 的Highlighter
界面允许荧光笔返回与传入的组件不同的组件。我实际上找不到任何正在使用的示例,但我想我会尝试使用它来创建某种假秒柱子。
预期的结果是左列中的文本应该截断右列开始的位置,所以我不能只使用Painter
. 右列应该为整个列表呈现相同的宽度,这是我还没有弄清楚但似乎并不难的问题。
至于现在,我发现行高被压缩到很小,你看不到任何文字。
这就是我的意思:
示例程序:
我想知道是否有正确的方法来使用这部分 API。我故意扩展JRendererLabel
以防万一那是问题,但它似乎更微妙......