我需要一个Widget来正确地显示包含HTML元素的文本。因此,我像那样使用了GWT HTML。
HTML text= new HTML(new SafeHtml() {
@Override
public String asString() {
return "<b>TestText</b>";
}
});
现在,我想选择由该小部件显示的文本,并以某种方式获得字符串。
我想右键单击标记的文本,并使用该字符串执行一些操作。
如果您的想法使用其他gwt小部件,我不会太专注于HTML小部件,这也没有问题。
我还可以访问Sencha GXT libarys。任何想法都将不胜感激。
发布于 2013-12-05 08:07:46
我假设您希望用户选择文本,然后右击检索选定的文本。我说的对吗?我不记得在GWT中检索选定文本的任何方法,因此我会使用纯javascript。已经有a thread解释了如何使用javascript实现这一点,因此您可以获取该代码并将其包装在JSNI方法中:
public class MyClass implements IsWidget {
private final HTML text;
public MyClass() {
text = new HTML(SafeHtmlUtils.fromTrustedString("<b>Some text</b>"));
text.addDomHandler(new ContextMenuHandler() {
@Override
public void onContextMenu(ContextMenuEvent event) {
String test = getSelection();
Window.alert(test);
}
}, ContextMenuEvent.getType());
}
private native String getSelection() /*-{
var text = "";
if ($wnd.getSelection) {
text = $wnd.getSelection().toString();
} else if ($doc.selection && $doc.selection.type != "Control") {
text = $doc.selection.createRange().text;
}
return text;
}-*/;
@Override
public Widget asWidget() {
return text;
}
}
发布于 2013-12-05 07:22:24
你可以用这样的东西:
final Label label = new Label("Some text");
label.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
label.getElement().getStyle().setBackgroundColor("#ff0"); //sth. like select
String txt = label.getText(); //get the String
Window.alert(txt); //do sth. with text
}
});
但它只适用于左键。如果必须使用右键单击,则可以使用本机JS代码。jQuery点击。不要使用b标签。它在HTML5中不受欢迎。
发布于 2013-12-11 04:44:35
实际上,我已经找到了一个GWT,它可以获得所选的文本。看这个https://code.google.com/p/gwt-selection/
在安装了柳条之后,我不得不
String currentSelection = Selection.getBrowserRange().getText();
谢谢你的回答-你帮了我很多忙
https://stackoverflow.com/questions/20402259
复制相似问题