我在Link SWT widget创建的文字如下:
Link message = new Link(parent, SWT.WRAP);
message.setText(myMessage);
我希望文本(在myMessage
变量中)可以选择,以授予用户复制它的权限。
我怎么能这样做?
我使用了Link小部件,因为我需要文本中的超链接可以点击。
答案 0 :(得分:2)
SWT Link
小部件无法选择。为了解决这个问题,我可以想到
Link
提供一个上下文菜单,其中包含 Copy 菜单项,可将文本复制到剪贴板Browser
窗口小部件,该窗口小部件可选,但布局较难,需要额外的工作才能在选择链接时触发功能org.eclipse.ui.forms
的额外依赖,请使用FormText
。 FormText
可以显示超链接并允许选择和复制文本答案 1 :(得分:1)
为什么不使用StyledText来允许文本选择?
String string = "This is sample text with a link and some other link here.";
final StyledText styledText = new StyledText (shell, SWT.MULTI | SWT.BORDER);
styledText.setText(string);
String link1 = "link";
String link2 = "here";
StyleRange style = new StyleRange();
style.underline = true;
style.underlineStyle = SWT.UNDERLINE_LINK;
int[] ranges = {string.indexOf(link1), link1.length(), string.indexOf(link2), link2.length()};
StyleRange[] styles = {style, style};
styledText.setStyleRanges(ranges, styles);
styledText.addListener(SWT.MouseDown, new Listener() {
@Override
public void handleEvent(Event event) {
// It is up to the application to determine when and how a link should be activated.
// In this snippet links are activated on mouse down when the control key is held down
if ((event.stateMask & SWT.MOD1) != 0) {
try {
int offset = styledText.getOffsetAtLocation(new Point (event.x, event.y));
StyleRange style = styledText.getStyleRangeAtOffset(offset);
if (style != null && style.underline && style.underlineStyle == SWT.UNDERLINE_LINK) {
System.out.println("Click on a Link");
}
} catch (IllegalArgumentException e) {
// no character under event.x, event.y
}
}
}
});
完整示例here