Java 如何使SWT链接小部件中的文本可选择
我在中创建了一个文本,如下所示:Java 如何使SWT链接小部件中的文本可选择,java,hyperlink,swt,Java,Hyperlink,Swt,我在中创建了一个文本,如下所示: Link message = new Link(parent, SWT.WRAP); message.setText(myMessage); 我希望文本(在myMessage变量中)可以选择,以允许用户复制它。 我该怎么做 我使用了链接小部件,因为我需要文本中的超链接才能单击。SWTLink小部件不可选择。为了解决这个问题,我想 为链接提供一个上下文菜单,其中包含一个复制菜单项,用于将文本复制到剪贴板 在将文本复制到剪贴板的链接旁边放置一个复制(工具)按钮 使
Link message = new Link(parent, SWT.WRAP);
message.setText(myMessage);
我希望文本(在myMessage
变量中)可以选择,以允许用户复制它。
我该怎么做
我使用了链接小部件,因为我需要文本中的超链接才能单击。SWT
Link
小部件不可选择。为了解决这个问题,我想
链接提供一个上下文菜单,其中包含一个复制菜单项,用于将文本复制到剪贴板
链接旁边放置一个复制(工具)按钮
浏览器
小部件,该小部件是可选择的,但更难布局,并且在选择链接时需要额外的工作来触发功能org.eclipse.ui.forms
,请使用FormText
。FormText
可以显示超链接,并允许选择和复制文本为什么不使用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
}
}
}
});
完整示例我看你对SO还不熟悉。如果您觉得有答案解决了问题,请单击绿色复选标记将其标记为“已接受”。这有助于保持对仍然没有答案的旧帖子的关注。这个小部件的用途超出了我的理解。。。