我们如何在gwt中使用css进行字符串匹配,比如谷歌搜索

我们如何在gwt中使用css进行字符串匹配,比如谷歌搜索,gwt,Gwt,我是gwt的新手。我正在开发搜索小部件。我想当一个用户在文本框中键入,建议的字符串将显示给用户和一些字符显示为粗体,这是由用户输入像在谷歌搜索 请帮帮我 TextBox fnametextbox=new TextBox(); Label l = new Label("search"); VerticalPanel p = new VerticalPanel(); public void onModuleLoad() { fname

我是gwt的新手。我正在开发搜索小部件。我想当一个用户在文本框中键入,建议的字符串将显示给用户和一些字符显示为粗体,这是由用户输入像在谷歌搜索

请帮帮我

 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");
    ...
}