我是SWT/JFace技术的新手,我发现了一个让我发疯的问题。在Eclipse RCP应用程序中,我有一个视图,其中放置了一个带有JFace TreeViewer的SWT树,该树通过标签提供程序提供标签和图标。根据客户要求,树的背景颜色为深蓝色,字体颜色为白色。当节点被选中时,这种颜色的组合导致节点文本的可视化效果不佳,文本不适合树区域,我们将鼠标指针放在节点上。不知何故出现了“本地高亮显示”。这可以在下图中显示。
另一方面,当我们放置鼠标的节点没有被选中时,这个问题不会发生。高亮显示会改变字体的颜色,使其更加可见。这可以在下图中显示。
在做了一些研究之后,我发现通过为swt.eraseItem
事件添加一个侦听器,我可以修改所选节点的背景颜色,然后禁用选择。这允许我定义自己的选择背景样式,并禁用event.detail
的swt.select
标志,以便在节点未被选中时强制操作系统高亮显示。
private final class EraseItemListener implements Listener {
public void handleEvent(Event event) {
// Only perform the node highlight when it is selected.
if ((event.detail & SWT.SELECTED) == SWT.SELECTED) {
// Modify background, emulate Windows highlighting.
...
// Set Windows that we do not want to draw this item as a selection (we have already highlighted the item in our way).
event.detail &= ~SWT.SELECTED;
}
}
}
如果使用swt.eraseItem
方法,是否有任何方法可以在正确的位置显示图标?这种行为是已知的错误吗?
提前谢了。
如果使用基于styledcelllabelprovider
的标签提供程序(可能是基于delegatingstyledcelllabelprovider
)的标签提供程序,则可以指定colors_on_selection
以保留所选内容的正常颜色。
如果这还不够好(这里没有Windows要测试),您可以重写paint
方法--同样,您可以尝试使用event.detail&=~swt.selected
来禁止正常的选择处理,甚至自己处理绘图。
在页面上有两个框 这两个框是一个数组的数据类似与 [ 这种格式的我去循环然后画的框 想要实现无论点击这两行哪行 这两行都高亮显示 用过根据id查找页面元素,但id只能返回第一个所以只能第一个高亮
我想突出显示JavaFX中显示的部分文本。到目前为止,我正在使用对象中的对象。为了突出显示文本中的特定部分,我使用标记将文本切割成部分(objects),以突出显示或不突出显示以下代码。 不幸的是,背景高亮显示不起作用,我有奇怪的换行符,如图所示。文本不包含任何换行符。 (对图片质量表示抱歉,这是一个真实的截图:)) 感谢任何帮助。 解决方案正如@eckig所建议的,在HBox中使用多个标签是一个
我正在使用mouseup事件来触发一个函数,该函数突出显示文本,并用跨度包围突出显示的文本(堆栈溢出函数): 我遇到的主要问题是,只要包含,文本只会在高亮显示尝试中高亮显示约20%(否则高亮显示会立即消失)。我尝试添加一个setTimeout,在1s内不调用surroundContent。我还尝试删除remove()语句,但仍然没有效果。 你知道为什么会这样吗?
自动取款机改变所选文本的高亮颜色似乎是不可能的。我用的是“黑暗”,但无论哪个主题,问题都是一样的。
问题内容: 选择字段作为ForeignKey时,如何更改select中的显示文本?我不仅需要显示FK的名称,还需要显示其父级的名称。 有人可以提供线索吗? 问题答案: 好吧,如果你希望它仅在admin中生效而不在全局中生效,则可以创建一个自定义子类,在自定义中使用该子类,然后将相关的admin类设置为使用自定义表单。以使用的模型具有FK的示例为例:
对于我使用的语法高亮Highlight.js自定义主题. 自动语言检测已关闭,因此您可能希望指定您使用的编程语言 ```rust fn main() { // Some code } ``` 与主题的其余部分一样,用于语法突出显示的css,可以使用您自己的文件覆盖. highlight.js 通常你不应该覆盖这个文件,除非你想使用更新的版本. highlight.css highlight