我们如何在gwt中使用css进行字符串匹配,比如谷歌搜索
我是gwt的新手。我正在开发搜索小部件。我想当一个用户在文本框中键入,建议的字符串将显示给用户和一些字符显示为粗体,这是由用户输入像在谷歌搜索 请帮帮我我们如何在gwt中使用css进行字符串匹配,比如谷歌搜索,gwt,Gwt,我是gwt的新手。我正在开发搜索小部件。我想当一个用户在文本框中键入,建议的字符串将显示给用户和一些字符显示为粗体,这是由用户输入像在谷歌搜索 请帮帮我 TextBox fnametextbox=new TextBox(); Label l = new Label("search"); VerticalPanel p = new VerticalPanel(); public void onModuleLoad() { fname
TextBox fnametextbox=new TextBox();
Label l = new Label("search");
VerticalPanel p = new VerticalPanel();
public void onModuleLoad()
{
fnametextbox.addKeyPressHandler(new KeyPress());
RootPanel.get().add(l);
RootPanel.get().add(fnametextbox);
}
public class KeyPress implements KeyPressHandler
{
public void onKeyPress(KeyPressEvent event)
{
String ab =fnametextbox.getText();
if(ab.length()>1)
{
greetingService.infouser(ab,new AsyncCallback<String>()
{
@Override
public void onFailure(Throwable caught)
{
Window.alert("Invalid");
}
@Override
public void onSuccess(String result)
{
System.out.println(result);
if(result==gresult)
{
System.out.println("result");
p.clear();
Label lii = new Label("not found");
p.setVisible(true);
p.setBorderWidth(1);
p.add(lii);
RootPanel.get().add(p);
}
else
{
p.clear();
p.setVisible(false);
p.setVisible(true);
p.setBorderWidth(1);
int l=0;
for (String retval: result.split("/"))
{
if(l==0)
{
Anchor an = new Anchor(retval,
false,
"http://localhost:8080/w1/",
"_blank");
p.add(an);
l++;
}
else
{
Label an=new Label(retval);
p.add(an);
l--;
}
RootPanel.get().add(p);
}
}
TextBox fnametextbox=newtextbox();
标签l=新标签(“搜索”);
VerticalPanel p=新的VerticalPanel();
moduleload()上的公共void
{
fnametextbox.addKeyPressHandler(新的KeyPress());
RootPanel.get().add(l);
RootPanel.get().add(fnametextbox);
}
公共类KeyPress实现KeyPressHandler
{
按键时公共无效(按键事件)
{
字符串ab=fnametextbox.getText();
如果(ab.长度()>1)
{
infouser(ab,新的AsyncCallback()
{
@凌驾
失败时的公共无效(可丢弃)
{
窗口警报(“无效”);
}
@凌驾
成功时的公共void(字符串结果)
{
系统输出打印项次(结果);
if(result==gresult)
{
系统输出打印项次(“结果”);
p、 清除();
标签lii=新标签(“未找到”);
p、 setVisible(真);
p、 宽度(1);
p、 添加(lii);
RootPanel.get().add(p);
}
其他的
{
p、 清除();
p、 setVisible(假);
p、 setVisible(真);
p、 宽度(1);
int l=0;
for(字符串retval:result.split(“/”)
{
如果(l==0)
{
锚点an=新锚点(返回,
假,,
"http://localhost:8080/w1/",
“_blank”);
p、 添加(an);
l++;
}
其他的
{
标签an=新标签(retval);
p、 添加(an);
l--;
}
RootPanel.get().add(p);
}
}
您是否尝试过在内部版本中提供此功能
--编辑-- 使用接受的不同构造函数
- 看看这个
String retval = "en<b>glish to hindi</b>";
Anchor anchor = new Anchor(retval, true, "http://localhost:8080/w1/", "_blank");
String retval=“英语转印地语”;
锚点锚点=新锚点(retval,truehttp://localhost:8080/w1/“,”空白“);
示例代码:(动态更改html中的值)
String match=“en”;
String result=“英语对印地语/英语口语/英语语法/英语歌曲”;
for(字符串retval:result.split(“/”){
字符串html=retval.replaceAll(匹配“+match+”);
System.out.println(html);
Anchor an=新的锚(html,true,“http://localhost:8080/w1/“,”空白“);
...
}
注意:获取用斜杠分隔的结果不是一个好的设计。如果搜索斜杠怎么办?不,我只使用简单的文本框和垂直面板以及显示和隐藏方法。我从mysqlok获取建议的字符串,但输入两个字符后它是一个静态更改。保留字符串变为粗体,但我想要像谷歌搜索一样如果字符串匹配后字符变为粗体。您知道如何从结果中找到匹配的子字符串吗?如果是,则可以基于匹配的文本形成html,并将其作为html传递给锚。使用
new-Anchor(html,true,“http://localhost:8080/w1/“,”\u blank“
。在构造函数中传递true
。
String match = "en";
String result = "english to hindi/english speaking/english grammer/english songs";
for (String retval : result.split("/")) {
String html = retval.replaceAll(match, "<b>" + match + "</b>");
System.out.println(html);
Anchor an = new Anchor(html, true, "http://localhost:8080/w1/", "_blank");
...
}