<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    小方的Java博客

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      27 隨筆 :: 17 文章 :: 115 評論 :: 0 Trackbacks
    GWT QQ 群號:28310588

    功能:
    1。當加載頁面時把數(shù)據(jù)庫的表讀入matchArr
    2。每次按鍵都是matchArr的查詢,查詢方法用正則表達式

    抱歉,沒什么注釋,給大家添麻煩了
    有任何疑問請聯(lián)系我
    qq:259102567?
    MSN:jorwen_fang@hotmail.com

    代碼下載

    我不久前寫的關于gwt文章

    另外在 《ajax in action》書中有提到更佳的算法,提高性能,以及打字過快的處理等功能。
    本人這個程序對付300以下數(shù)據(jù)還是可以忍受等待時間的




    代碼:
    1.InputHint.java
    package?mypack.client;

    import?java.util.ArrayList;

    import?com.google.gwt.core.client.EntryPoint;
    import?com.google.gwt.user.client.Window;
    import?com.google.gwt.user.client.rpc.AsyncCallback;
    import?com.google.gwt.user.client.ui.*;

    /**
    ?*?Entry?point?classes?define?<code>onModuleLoad()</code>.
    ?
    */

    public?class?InputHint?implements?EntryPoint?{

    ????
    private?ArrayList?matchArr;

    ????
    private?TextBox?tb;
    ????
    ????
    private?Label?label;

    ????
    private?ListBox?list;

    ????
    public?void?onModuleLoad()?{
    ????????label?
    =?new?Label("輸入:");
    ????????tb?
    =?new?TextBox();
    ????????IH_Service.Util.getInstance().getResult(
    ????????????
    new?AsyncCallback()?{
    ????????????????
    public?void?onSuccess(Object?result)?{
    ????????????????????matchArr?
    =?(ArrayList)?result;
    ????????????????}


    ????????????????
    public?void?onFailure(Throwable?caught)?{
    ????????????????????Window.alert(caught.toString());
    ????????????????}

    ????????????}

    ????????);
    ????????tb.addKeyboardListener(
    new?KeyboardListener()?{
    ????????????
    public?void?onKeyDown(Widget?sender,?char?keyCode,?int?modifiers)?{
    ????????????}


    ????????????
    public?void?onKeyPress(Widget?sender,?char?keyCode,?int?modifiers)?{
    ????????????????
    //?TODO?Auto-generated?method?stub

    ????????????}


    ????????????
    public?void?onKeyUp(Widget?sender,?char?keyCode,?int?modifiers)?{
    ????????????????fillList(tb.getText());
    ????????????}

    ????????}
    );
    ????????tb.addFocusListener(
    new?FocusListener()?{

    ????????????
    public?void?onFocus(Widget?sender)?{
    ????????????????list.clear();
    ????????????????
    if(tb.getText().equals("")){
    ????????????????????
    for?(int?i?=?0;?i?<?matchArr.size();?i++)?{
    ????????????????????????list.addItem((String)?matchArr.get(i));
    ????????????????????????list.setVisible(
    true);
    ????????????????????}

    ????????????????}
    else{
    ????????????????????fillList(tb.getText());
    ????????????????????list.setVisible(
    true);
    ????????????????}

    ????????????}


    ????????????
    public?void?onLostFocus(Widget?sender)?{
    ????????????????list.setVisible(
    false);

    ????????????}

    ????????}
    );
    ????????list?
    =?new?ListBox();
    ????????list.addChangeListener(
    new?ChangeListener()?{

    ????????????
    public?void?onChange(Widget?sender)?{
    ????????????????tb.setText(list.getItemText(list.getSelectedIndex()).trim());
    ????????????}

    ????????}
    );
    ????????list.setVisible(
    false);
    ????????list.setVisibleItemCount(
    10);
    ????????RootPanel.get(
    "label").add(label);
    ????????RootPanel.get(
    "tb").add(tb);
    ????????RootPanel.get(
    "list").add(list);
    ????}


    ????
    private?void?fillList(String?info)?{
    ????????IH_Service.Util.getInstance().fillList(info,?matchArr,
    ????????????????
    new?AsyncCallback()?{
    ????????????????????
    public?void?onSuccess(Object?result)?{
    ????????????????????????ArrayList?arr?
    =?(ArrayList)?result;
    ????????????????????????list.clear();
    ????????????????????????
    if(arr?==?null?||?arr.size()?==?0){
    ????????????????????????????list.addItem(
    "??????無匹配字符?");
    ????????????????????????????list.setVisible(
    true);
    ????????????????????????}
    else{
    ????????????????????????????
    for?(int?i?=?0;?i?<?arr.size();?i++)?{
    ????????????????????????????????list.addItem((String)?arr.get(i));
    ????????????????????????????????list.setVisible(
    true);
    ????????????????????????????}

    ????????????????????????}

    ????????????????????}


    ????????????????????
    public?void?onFailure(Throwable?caught)?{
    ????????????????????????Window.alert(caught.toString());
    ????????????????????}

    ????????????????}

    ????????);
    ????}

    }

    2.IH_Service.java
    package?mypack.client;

    import?java.util.ArrayList;

    import?com.google.gwt.core.client.GWT;
    import?com.google.gwt.user.client.rpc.RemoteService;
    import?com.google.gwt.user.client.rpc.ServiceDefTarget;

    public?interface?IH_Service?extends?RemoteService?{

    ????
    public?static?final?String?ENTRY_POINT="/IH_PRO/input_hint";

    ????
    public?static?class?Util{
    ????
    ??????
    public?static?IH_ServiceAsync?getInstance(){

    ????????????IH_ServiceAsync?instance?
    =?(IH_ServiceAsync)GWT.create(IH_Service.class);
    ????????????ServiceDefTarget?target?
    =?(ServiceDefTarget)instance;
    ????????????target.setServiceEntryPoint(ENTRY_POINT);
    ????????????
    return?instance;
    ??????}

    ????}

    ????
    ????
    public?ArrayList?getResult();
    ????
    public?ArrayList?fillList(String?info,?ArrayList?matchArr);
    }


    3.IH_ServiceAsync.java
    package?mypack.client;

    import?java.util.ArrayList;

    import?com.google.gwt.user.client.rpc.AsyncCallback;

    public?interface?IH_ServiceAsync?{

    ??????
    public?void?getResult(AsyncCallback?callback);
    ????
    public?void?fillList(String?info,?ArrayList?matchArr,?AsyncCallback?callback);
    }


    4.IH_ServiceImpl.java
    package?mypack.server;

    import?java.sql.*;
    import?java.util.ArrayList;
    import?java.util.regex.Matcher;
    import?java.util.regex.Pattern;

    import?mypack.client.IH_Service;
    import?com.google.gwt.user.server.rpc.RemoteServiceServlet;

    public?class?IH_ServiceImpl?extends?RemoteServiceServlet?implements?IH_Service?{
    ????
    private?static?final?long?serialVersionUID?=?1L;
    ????Connection?connection?
    =?null;
    ????PreparedStatement?pstm?
    =?null;
    ????ResultSet?rs?
    =?null;
    ????
    public?ArrayList?getResult(){
    ????????
    try?{
    ????????????Class.forName(
    "com.microsoft.jdbc.sqlserver.SQLServerDriver");
    ????????????connection?
    =?DriverManager
    ????????????????????.getConnection(
    ????????????????????????????
    "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=ajax",
    ????????????????????????????
    "sa",?"sa");
    ????????????pstm?
    =?connection
    ????????????????????.prepareStatement(
    "select?name?from?T_INPUT");
    ????????????rs?
    =?pstm.executeQuery();
    ????????????ArrayList?arr?
    =?new?ArrayList();
    ????????????
    while(rs.next()){
    ????????????????arr.add(rs.getString(
    "name"));
    ????????????}

    ????????????
    return?arr;
    ????????}
    ?catch?(ClassNotFoundException?e)?{
    ????????????e.printStackTrace();
    ????????}
    ?catch?(Exception?e)?{
    ????????????e.printStackTrace();
    ????????}
    finally{
    ????????????
    try?{
    ????????????????
    if(rs?!=?null)
    ????????????????????rs.close();
    ????????????????
    if(pstm?!=?null)
    ????????????????????pstm.close();
    ????????????????
    if(connection?!=?null)
    ????????????????????connection.close();
    ????????????}
    ?catch?(SQLException?e)?{}
    ????????}

    ????????
    return?null;
    ????}

    ????
    ????
    public?ArrayList?fillList(String?info,?ArrayList?matchArr){
    ????????Pattern?p?
    =?Pattern.compile("^"+info+".");
    ????????Matcher?m
    =null;
    ????????ArrayList?arr?
    =?new?ArrayList();
    ????????
    for(int?i?=?0;?i?<?matchArr.size();?i++){
    ????????????m?
    =?p.matcher((String)matchArr.get(i));
    ????????????
    if(m.find()){
    ????????????????arr.add((String)matchArr.get(i));
    ????????????}

    ????????}

    ????????
    return?arr;
    ????}

    }


    5.mycss.css
    .sd{
    width
    :150px;
    background-color
    :cccccc;
    border
    :1px?solid?red;
    padding-left
    :2px;
    overflow
    :visible;
    }

    6.InputHint.html
    <!--<!DOCTYPE?HTML?PUBLIC?"-//W3C//DTD?HTML?4.01?Transitional//EN"?"http://www.w3.org/TR/html4/loose.dtd">-->

    <html>
    ????
    <head>
    ????
    <meta?http-equiv="Content-Type"?content="text/html;?charset=utf-8">
    ????
    ????????
    <!--???????????????????????????????????????????-->
    ????????
    <!--?Any?title?is?fine?????????????????????????-->
    ????????
    <!--???????????????????????????????????????????-->
    ????????
    <title>Wrapper?HTML?for?InputHint</title>

    ????????
    <!--???????????????????????????????????????????-->
    ????????
    <!--?Use?normal?html,?such?as?style????????????-->
    ????????
    <!--???????????????????????????????????????????-->
    ????????
    <style>
    ????????????body,td,a,div,.p
    {font-family:arial,sans-serif}
    ????????????div,td
    {color:#000000}
    ????????????a:link,.w,.w?a:link
    {color:#0000cc}
    ????????????a:visited
    {color:#551a8b}
    ????????????a:active
    {color:#ff0000}
    ????????
    </style>

    ????????
    <!--???????????????????????????????????????????-->
    ????????
    <!--?The?module?reference?below?is?the?link????-->
    ????????
    <!--?between?html?and?your?Web?Toolkit?module??-->????????
    ????????
    <!--???????????????????????????????????????????-->
    ????????
    <meta?name='gwt:module'?content='mypack.InputHint'>
    ????????
    <link?rel='stylesheet'?type='text/css'?href='mycss.css'/>
    ????????
    ????
    </head>

    ????
    <!--???????????????????????????????????????????-->
    ????
    <!--?The?body?can?have?arbitrary?html,?or??????-->
    ????
    <!--?you?can?leave?the?body?empty?if?you?want??-->
    ????
    <!--?to?create?a?completely?dynamic?ui?????????-->
    ????
    <!--???????????????????????????????????????????-->
    ????
    <body>

    ????????
    <!--????????????????????????????????????????????-->
    ????????
    <!--?This?script?is?required?bootstrap?stuff.???-->
    ????????
    <!--?You?can?put?it?in?the?HEAD,?but?startup????-->
    ????????
    <!--?is?slightly?faster?if?you?include?it?here.?-->
    ????????
    <!--????????????????????????????????????????????-->
    ????????
    <script?language="javascript"?src="gwt.js"></script>

    ????????
    <!--?OPTIONAL:?include?this?if?you?want?history?support?-->
    ????????
    <iframe?id="__gwt_historyFrame"?style="width:0;height:0;border:0"></iframe>

    ????????
    <h1>InputHint</h1>

    ????????
    <p>
    ????????????你好,輸入前提示演示
    ????????
    </p>

    ????????
    <table?align=center>
    ????????????
    <tr>
    ????????????????
    <td?id="label"></td><td?id="tb"></td>
    ????????????
    </tr>
    ????????????
    <tr>
    ????????????????
    <td></td><td?id="list"?class="sd"></td>
    ????????????
    </tr>
    ????????
    </table>
    ????
    </body>
    </html>

    7.InputHint.gwt.xml
    <module>

    ????
    <!--?Inherit?the?core?Web?Toolkit?stuff.??????????????????-->
    ????
    <inherits?name='com.google.gwt.user.User'/>

    ????
    <!--?Specify?the?app?entry?point?class.???????????????????-->
    ????
    <entry-point?class='mypack.client.InputHint'/>
    ????
    ????
    <servlet?path='/IH_PRO/input_hint'?class='mypack.server.IH_ServiceImpl'/>
    </module>





    posted on 2006-07-14 13:51 方佳瑋 閱讀(3498) 評論(10)  編輯  收藏 所屬分類: AJAX

    評論

    # re: [ajax] 用GWT做的輸入前提示 2006-07-14 15:02 peace
    “沒什么注釋,給大家添麻煩了”確實是這的  回復  更多評論
      

    # re: [ajax] 用GWT做的輸入前提示 2006-07-15 10:40 steeven
    有了GWT, Google的產(chǎn)品就不稀奇了 :)  回復  更多評論
      

    # re: [ajax] 用GWT做的輸入前提示 2006-07-15 11:51 方佳瑋
    當然,我的程序與google的輸入前提示無論算法和功能都無法比,只是模擬一下功能而已  回復  更多評論
      

    # re: [ajax] 用GWT做的輸入前提示 2006-07-15 18:43 CowNew開源團隊
    1、public ArrayList getResult();
    沒必要返回值為ArrayList 吧,List九足夠了。
    2、e.printStackTrace();
    小心不知道怎么死的呀。  回復  更多評論
      

    # re: [ajax] 用GWT做的輸入前提示 2006-07-15 18:45 方佳瑋
    多謝指導,小弟受益了。  回復  更多評論
      

    # re: [ajax] 用GWT做的輸入前提示 2006-11-01 16:12 joeney
    公布了群又不讓加,LZ什么意思啊???  回復  更多評論
      

    # re: [ajax] 用GWT做的輸入前提示 2006-11-01 16:40 方佳瑋
    大哥,人滿了  回復  更多評論
      

    # re: [ajax] 用GWT做的輸入前提示 2006-12-27 16:48 yanghuixia
    謝謝  回復  更多評論
      

    # re: [ajax] 用GWT做的輸入前提示 2006-12-28 22:02 yanghuixia
    數(shù)據(jù)庫是怎么連起來的?  回復  更多評論
      

    # re: [原創(chuàng)] 用GWT做的輸入前提示 2007-04-27 18:23 張揚斌
    不錯 學習中   回復  更多評論
      

    主站蜘蛛池模板: 免费一级一片一毛片| 免费看男人j放进女人j免费看| 亚洲人成自拍网站在线观看| 亚洲中文字幕久在线| 亚洲日本在线播放| 亚洲国产成人手机在线电影bd| 久久久久亚洲AV成人无码网站| 久久夜色精品国产亚洲AV动态图 | 羞羞的视频在线免费观看| 亚洲AV无码国产一区二区三区| 亚洲av无码兔费综合| 免费在线观看自拍性爱视频| 一级毛片a免费播放王色电影| 一级做a爰全过程免费视频毛片| aa级女人大片喷水视频免费| 在线成人精品国产区免费| 亚洲电影免费在线观看| 成人免费观看一区二区| 最近中文字幕mv免费高清视频7 | 久久最新免费视频| 亚洲欧洲免费视频| 精品久久久久久久久免费影院| 日韩在线天堂免费观看| 亚洲国产一区二区三区| 亚洲女初尝黑人巨高清| 亚洲精品国产成人专区| 亚洲av产在线精品亚洲第一站| 久久亚洲精品无码gv| 你是我的城池营垒免费看| 久久不见久久见免费视频7| 女人被男人桶得好爽免费视频| 免费又黄又硬又爽大片| 亚洲码国产精品高潮在线| 亚洲精品日韩中文字幕久久久| 中文字幕亚洲精品无码| 香蕉国产在线观看免费| 无码人妻精品中文字幕免费| 久久不见久久见中文字幕免费| 四虎影视免费永久在线观看 | 成年女人毛片免费播放视频m| 免费播放春色aⅴ视频|