2012-04-05 44 views
0

我很難理解睡衣/ GWT事件處理系統。我目前正在使用最新的0.8睡衣來測試。我不確定什麼是最好的事件處理結構,因爲我從來沒有做過GUI編程。睡衣事件處理

我到目前爲止找到的文檔還沒有太多運氣。有誰知道睡衣或GWT的一個很好的參考?

我的主要困難來自理解onClick,onMouseleave等聽衆來自哪裏?他們如何觸發?他們在哪裏定義?我是否定義它們?

什麼是事件處理系統的分層結構?

我知道這些都是非常一般的問題,但我真的只是在正確的方向尋找一個點。

謝謝,我感謝任何幫助。

回答

1

我建議你在示例文件夾中學習源代碼。開始與這個http://pyjs.org/book/output/Bookreader.html#Getting%20Started

有一些鏈接這是有幫助的,我: http://gwt.google.com/samples/Showcase/Showcase.html

http://pyjs.org/examples/

此外,在示例文件夾中有一個名爲showcase一個很好的例子,讓你所有的API和一些有用的代碼樣本 /localhost/somedir/showcase/output/Showcase.html

由於API是類似的,你可以隨時檢查他們的書籍(特別是對理解回調等有幫助..):

http://www.amazon.com/Beginning-Google-Web-Toolkit-Professional/dp/1430210311/ref=sr_1_12?ie=UTF8&qid=1334659695&sr=8-12

http://www.amazon.com/Google-Toolkit-Applications-Ryan-Dewsbury/dp/0321501969/ref=sr_1_7?ie=UTF8&qid=1334659695&sr=8-7

的Django和睡衣 http://www.derekschaefer.net/2011/02/08/pyjamas-django-pure-win/

不過我同意有超越hello world示例更好的入門教程的巨大需求。我自己正在努力。祝你好運

ps。我創建了一個似乎可行的小回調示例。如果有人在這裏糾正我的錯誤並編輯這個例子,以便更好地爲人們使用,我會感到非常高興。所有我試圖在這裏做的是導航2頁(由2類代表:介紹和Outro)

 
    import pyjd 
    from pyjamas.ui.VerticalPanel import VerticalPanel 
    from pyjamas.ui.RootPanel import RootPanel 
    from pyjamas.ui.SimplePanel import SimplePanel 
    from pyjamas.ui.DockPanel import DockPanel 
    from pyjamas.ui.Hyperlink import Hyperlink 
    from pyjamas.ui.Button import Button 
    from pyjamas.ui.HTML import HTML 
    from pyjamas import Window 

    class Site(SimplePanel): 
     def onModuleLoad(self): 
      SimplePanel.__init__(self) 

      self.panel = DockPanel() 
      self.intro = Intro() 
      self.outro = Outro() 
      self.index = HTML('index') 
      self.curPage = self.index 

      vp=VerticalPanel() 
      vp.add(self.index) 

      self.link1 = Hyperlink('menu item 1') 
      self.link2 = Hyperlink('menu item 2') 
      self.link1.addClickListener(getattr(self, 'onLINK1')) 
      self.link2.addClickListener(getattr(self, 'onLINK2')) 

      self.panel.add(self.link1, DockPanel.WEST) 
      self.panel.add(self.link2, DockPanel.WEST) 

      self.panel.add(self.index, DockPanel.CENTER) 
      RootPanel().add(self.panel) 

     def onLINK1(self): 
      self.panel.remove(self.curPage, DockPanel.CENTER) 
      self.panel.add(self.intro, DockPanel.CENTER) 
      self.curPage = self.intro 

     def onLINK2(self): 
      self.panel.remove(self.curPage, DockPanel.CENTER) 
      self.panel.add(self.outro, DockPanel.CENTER) 
      self.curPage = self.outro 

    class Intro(SimplePanel): 
     def __init__(self): 
      SimplePanel.__init__(self) 
      self.vp = VerticalPanel() 
      self.html = HTML('This is intro') 
      self.button = Button('click me', self) 
      self.vp.add(self.html) 
      self.vp.add(self.button) 
      self.setWidget(self.vp) 

     def onClick(self): 
      Window.alert('onClick Intro') 

    class Outro(SimplePanel): 
     def __init__(self): 
      SimplePanel.__init__(self) 
      self.vp = VerticalPanel() 
      self.html = HTML('This is outro') 
      #we can do it this way 
      self.button1 = Button('click me1', getattr(self, 'onBUTTON1')) 
      self.button2 = Button('click me2') 
      #or set up listener 
      self.button2.addClickListener(getattr(self,'onBUTTON2')) 
      self.vp.add(self.html) 
      self.vp.add(self.button1) 
      self.vp.add(self.button2) 
      self.setWidget(self.vp) 

     def onBUTTON1(self): 
      Window.alert('hello from button1') 
     def onBUTTON2(self): 
      Window.alert('hello from button2') 

    if __name__ == '__main__': 
     pyjd.setup('./Site.html') 
     app = Site() 
     app.onModuleLoad() 
     pyjd.run()