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

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

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

    Java Me Games

    Java, Me, and Games.

      BlogJava :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
      13 Posts :: 0 Stories :: 3 Comments :: 0 Trackbacks
    用GWT(Google Web Toolkit)開(kāi)發(fā)Ajax-圖片瀏覽
    摘要 從本文開(kāi)始我們開(kāi)始一個(gè)有點(diǎn)實(shí)際意義的應(yīng)用,圖片瀏覽器,初步我們只實(shí)現(xiàn)簡(jiǎn)單的框架來(lái)實(shí)現(xiàn)圖片瀏覽的基本功能,然后再繼續(xù)深化,做出更好的界面,和更多的管理功能。
    關(guān)鍵字 Google Web Toolkit GWT Ajax 圖片瀏覽

    簡(jiǎn)單設(shè)計(jì)

    設(shè)想一下簡(jiǎn)單的界面效果,和已經(jīng)實(shí)現(xiàn)這個(gè)效果需要的提供的數(shù)據(jù)服務(wù)。
    打開(kāi)畫圖版,簡(jiǎn)單的畫一下界面。
    圖片瀏覽
    界面說(shuō)明
    • 最頂上一個(gè)橫向的標(biāo)題欄
    • 中間左邊一個(gè)是小的預(yù)覽圖片列表
    • 中間右邊是圖片瀏覽主窗口
    • 最底部有一個(gè)簡(jiǎn)單的版權(quán)之類的說(shuō)明
    數(shù)據(jù)服務(wù)
    • 一保存圖片信息的數(shù)據(jù)結(jié)構(gòu)
    • 一個(gè)能獲取指定要求的圖片的集合的服務(wù)

    實(shí)現(xiàn)過(guò)程

    創(chuàng)建界面
    頁(yè)面構(gòu)成,參看已經(jīng)設(shè)計(jì)的界面,從外往內(nèi)一個(gè)一個(gè)結(jié)構(gòu),把界面分成上中下三個(gè)面板,其中第二塊分割成左右兩個(gè)面板。這樣不難得到這樣的結(jié)果,在onModuleLoad方法中添加實(shí)現(xiàn)一下功能的代碼:
    VerticalPanel mainPanel;//主面板
    HorizontalPanel topPart;//頂端部分
    HorizontalPanel centerPart;//中間部分
    HorizontalPanel bottomPart;//底端部分
    HorizontalPanel imagesPart;//圖片列表
    HorizontalPanel previewPart;//圖片預(yù)覽
    //按照以下安裝過(guò)程組裝
    mainPanel.add(topPart);
    mainPanel.add(centerPart);
    mainPanel.add(bottomPart);
    centerPart.add(imagesPart);
    centerPart.add(previewPart);
    注意可能我們的圖片會(huì)很多,希望不會(huì)把頁(yè)面撐得很長(zhǎng)很長(zhǎng),GWT提供了不過(guò)的ScrollPanel,只要把 centerPart.add(imagesPart);修改成centerPart.add(new ScrollPanel(imagesPart));就可以了。
    同樣圖片也可能會(huì)很大,也一樣在previewPart上添加一個(gè)滾動(dòng)面板。

    圖片服務(wù)實(shí)現(xiàn)

    1. 一個(gè)保存圖片數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu),簡(jiǎn)單點(diǎn),創(chuàng)建一個(gè)org.jmg.client.ImageData implements IsSerializable,這個(gè)類中只有兩個(gè)屬性,title,url,這兩個(gè)屬性已經(jīng)很好的表明他們的用途了,不再細(xì)說(shuō)。至于getter, setter,我只提供了get,初始化用構(gòu)造函數(shù)傳參,你也可以根據(jù)自己習(xí)慣修改。個(gè)人原則,能不提供的方法盡量不提供。需要注意一點(diǎn)很重要,這個(gè)類一定要實(shí)現(xiàn)com.google.gwt.user.client.rpc.IsSerializable這個(gè)標(biāo)志接口,這個(gè)會(huì)在編譯的時(shí)候生成相應(yīng)的 javascript的對(duì)象,用戶在客戶端運(yùn)行。
    2. 創(chuàng)建服務(wù),在client包中寫ImageServiceAsync,ImageService,這兩個(gè)接口,在server中實(shí)現(xiàn) ImageServiceImpl implements ImageService。ImageServiceImpl,所需提供的方法就是獲取圖片列表,返回一個(gè)ImageData數(shù)組或是集合類,都可以,我這里選擇了數(shù)組。

    添加客戶端事件
    有了界面,有了服務(wù),就可以把這兩個(gè)東西組裝在一起了。我們需要兩個(gè)事件處理,第一個(gè)是在客戶端剛剛打開(kāi)的時(shí)候,在"創(chuàng)建界面"小節(jié)中我們已經(jīng)在 onModuleLoad添加了界面大致框架的初始化,現(xiàn)在我們要調(diào)用服務(wù),并且把獲取到的數(shù)據(jù),構(gòu)造成 com.google.gwt.user.client.ui.Image對(duì)象,添加到imagesPart中,代碼大致如下:

    async.getImageData(new AsyncCallback() {
    public void onFailure(Throwable caught) {
    }
    public void onSuccess(Object result) {
    ImageData[] images = (ImageData[]) result;
    for (int i = 0; i < images.length; i++) {
    Image image = new Image(images[i].getUrl());//根據(jù)url構(gòu)造image對(duì)象
    image.setPixelSize(120, 120);//限制預(yù)覽圖片的大小
    imagesPart.add(image);//添加到imagesPart中
    }
    }
    });
    到這里你編譯部署的時(shí)候就已經(jīng)可以看到大致的運(yùn)行效果了。左邊是一個(gè)小圖片的列表,右邊是一塊空白的區(qū)域。
    到現(xiàn)在剩下的事情就是需要在小圖上添加一個(gè)鼠標(biāo)事件,在鼠標(biāo)移上去的時(shí)候,右邊顯示大圖。
    這個(gè)過(guò)程也很簡(jiǎn)單,就像寫swing程序一樣,只要在上邊的Image對(duì)象構(gòu)造好的時(shí)候添加一個(gè)mouseListener就可以了:
    image.addMouseListener(new MouseListenerAdapter() {
    public void onMouseEnter(Widget sender) {
    sender.addStyleName("selected");
    previewPart.clear();
    Image img = new Image(((Image)sender).getUrl());
    //注意這里的Image需要?jiǎng)?chuàng)建一個(gè),而不是sender強(qiáng)換型,
    //最初的時(shí)候我就是為了節(jié)省一個(gè)對(duì)象,強(qiáng)換型了一次,
    //至于效果你可以自己動(dòng)手改改試試看
    img.addStyleName("big");
    previewPart.add(img);
    }
    public void onMouseLeave(Widget sender) {
    sender.removeStyleName("selected");
    }
    });

    運(yùn)行部署 到這里我們的圖片瀏覽器就基本完成了,至于樣式表之類的東西就不在這里說(shuō)了。不說(shuō)不是表示不重要,GWT推薦所有東西都用樣式表來(lái)控制,而是很重要。這里我截了一個(gè)簡(jiǎn)單的圖,僅作運(yùn)行效果:

    運(yùn)行圖例

    源碼下載:imageviewer_src.rar
    運(yùn)用下載:imageviewer.rar


    參考
    更多文章
    posted on 2007-01-06 03:29 Nile Black 閱讀(1426) 評(píng)論(0)  編輯  收藏 所屬分類: Java
    主站蜘蛛池模板: 亚洲成av人片天堂网| 日韩中文字幕免费| 亚洲AV成人噜噜无码网站| 国内少妇偷人精品视频免费| 久久亚洲精品无码观看不卡| 亚洲2022国产成人精品无码区| 亚洲乱码卡一卡二卡三| 3d成人免费动漫在线观看| 免费在线观看污网站| 国产精品亚洲色婷婷99久久精品| 最新69国产成人精品免费视频动漫| 亚洲无线观看国产精品| 亚洲一卡2卡4卡5卡6卡残暴在线| 国内精品免费麻豆网站91麻豆 | 999在线视频精品免费播放观看 | 国产91精品一区二区麻豆亚洲| 免费无毒a网站在线观看| 亚洲精品网站在线观看不卡无广告 | 免费播放国产性色生活片| 亚洲国产香蕉人人爽成AV片久久 | 亚洲一线产区二线产区区| 性做久久久久免费看| 瑟瑟网站免费网站入口| 亚洲深深色噜噜狠狠爱网站| 先锋影音资源片午夜在线观看视频免费播放| 国产免费黄色大片| 国产免费AV片在线观看播放| 国产亚洲精品免费| 亚洲精品视频免费观看| 亚洲精品私拍国产福利在线| 一个人免费观看日本www视频| 免费精品一区二区三区在线观看 | 国产一区在线观看免费| 日本特黄特色AAA大片免费| 亚洲gv猛男gv无码男同短文| 免费观看的毛片大全| 特a级免费高清黄色片| 免费a级毛片永久免费| 一个人免费视频在线观看www | 免费一级大黄特色大片| 精品国产污污免费网站|