我需要一个Widget来正确显示文本,包含HTML元素。因此我使用了GWT HTML-Widget。
HTML text= new HTML(new SafeHtml() {
@Override
public String asString() {
return "<b>TestText</b>";
}
});
现在我想选择该窗口小部件显示的文本,并以某种方式获取字符串。
我想右键单击标记的文本,并使用该字符串
执行某些操作如果你的想法使用其他gwt小部件也没问题,我不太关注那个HTML小部件。
我也可以访问Sencha GXT libarys。 任何想法都将不胜感激。
答案 0 :(得分:0)
你可以这样使用:
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中已弃用。
答案 1 :(得分:0)
我假设您希望用户选择文本,然后右键单击检索所选文本。我对吗?我不记得在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;
}
}
答案 2 :(得分:0)
我实际上找到了一个可以获取所选文本的GWT-Libary。 观看此https://code.google.com/p/gwt-selection/
安装图书馆后,我不得不
String currentSelection = Selection.getBrowserRange().getText();
感谢您的回答 - 您帮助了我很多