gpt4 book ai didi

java - SWT 链接闪烁渐变背景

转载 作者:行者123 更新时间:2023-11-30 05:17:32 25 4
gpt4 key购买 nike

我正在开发一个使用 SWT 界面的 Eclipse 插件。我需要显示文本,并且该文本中需要有链接。我发现的唯一两个允许我在文本中包含可点击链接的小部件是链接和浏览器。然而,浏览器对于我的需求来说太过分了,而且我无法正确自定义它的外观。这只留下了链接小部件。

问题是我需要 Link 小部件从它所在的 Composite 继承渐变。它可以正确执行此操作,只有在调整大小或滚动 Link 组件时才会闪烁。 Link 是我见过这种效果的唯一组件。

为了解决这个问题,我尝试过操纵其他组件以使其具有可点击的链接,但我还没有找到好的解决方案。

是否有办法修复链接上的闪烁效果,或者是否有其他组件支持链接?

谢谢

布莱恩

最佳答案

您是否尝试过将 SWT.NO_BACKGROUND 传递到您的链接小部件?它可能会有点奇怪......你可能需要做更多的工作才能正确绘制 GUI,但这将是我的第一个猜测。

除此之外,这是我对 StyledText 内部链接的快速而肮脏的实现。您将需要填写以更改光标(如果这是您想要的),以及提出一个好的“文本到链接”映射方案。

唯一的问题是我不确定 StyledText 是否会继承您的背景...尝试一下。

public class StyledTextExample {
public static void main(String [] args) {
// create the widget's shell
Shell shell = new Shell();
shell.setLayout(new FillLayout());
shell.setSize(200, 100);
Display display = shell.getDisplay();
// create the styled text widget
final StyledText widget = new StyledText(shell, SWT.NONE);

String text = "This is the StyledText widget.";
widget.setText(text);
widget.setEditable(false);

final StyleRange hyperlinkStyle = new StyleRange();
String linkWord = "StyledText";
hyperlinkStyle.start = text.indexOf(linkWord);
hyperlinkStyle.length = linkWord.length();
hyperlinkStyle.fontStyle = SWT.BOLD;
hyperlinkStyle.foreground = display.getSystemColor(SWT.COLOR_BLUE);
widget.setStyleRange(hyperlinkStyle);


widget.addMouseListener(new MouseAdapter() {
public void mouseUp(MouseEvent arg0) {
Point clickPoint = new Point(arg0.x, arg0.y);
try {
int offset = widget.getOffsetAtLocation(clickPoint);
if (widget.getStyleRangeAtOffset(offset) != null) {
System.out.println("link");
}
} catch (IllegalArgumentException e) {
//ignore, clicked out of text range.
}
}});
shell.open();
while (!shell.isDisposed())
if (!display.readAndDispatch()) display.sleep();
}
}

关于java - SWT 链接闪烁渐变背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/162969/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com