1. 從GWT的widgets小物件與panels面板裏面選出UI介面需要的元素,當然這就需要平常經驗以及閱讀文件的能力,Google提供的文件內容如下,
最後決定使用底下widgets
- a table 存放 stock data→FlexTable可以提供使用者動態增刪表格內容
- 兩個新增與刪除按鈕→Button
- 一個輸入框→TextBox
- 時間同步顯示→Label
- 或者自行開發widgets→ Creating Custom Widgets.
Root panel為程式元件的動態容器,隱形但卻是必要的,位於任何GWT介面的上層,可以放在body或者任何地方,一個body也可以放置多個Root panel,每一個都有自己的GWT widgets與目的。horizontal panel的目的為放置一個輸入框與按鈕,可以增加股票資訊。至於vertical panel就是要擺進所有的widgets顯示畫面 。
2.在頁面裡嵌入這些程式,因為我們要在網頁上執行,這個範例的html在StockWatcher/war/StockWatcher.html,改變底下幾行
h1股票觀測站
刪除table裡的資料
3.接著就要到GWT JAVA主程式 src/.../../client/StochWatcher.java,
一.放進所有需要的panels與widgets,在
public class StockWatcher裡面,先把private static final兩項刪除加上底下數行
private VerticalPanel mainPanel = new VerticalPanel(); private FlexTable stocksFlexTable = new FlexTable(); private HorizontalPanel addPanel = new HorizontalPanel(); private TextBox newSymbolTextBox = new TextBox(); private Button addStockButton = new Button("Add"); private Label lastUpdatedLabel = new Label();
再把onModuleLoad()裡的東西都刪除,這時eclipse會顯示許多紅燈,因為以上的型態都
沒有確定their types are undefined,利用eclipse的功能,對紅燈項目按左鍵,
選擇import EntryPoint(com.google.gwt.core.client.EntryPoint) ...等等,一個個
同樣步驟,紅燈就會熄了。
二.建立股票資訊表格:先設定欄位名稱為代號、價格、變化率、移除等,加在
onModuleLoad()底下
// Create table for stock data. stocksFlexTable.setText(0, 0, "代號"); stocksFlexTable.setText(0, 1, "價格"); stocksFlexTable.setText(0, 2, "變化率"); stocksFlexTable.setText(0, 3, "移除");
三.我們還需要兩個panels來展示widgets,Add Stock panel一個平行的panel包含textbox
和addbotten 。the Main panel則來放置表格,Add Stock panel, and the timestamp,加在 onModuleLoad()裡面
// Assemble Add Stock panel. addPanel.add(newSymbolTextBox); addPanel.add(addStockButton); // Assemble Main panel. mainPanel.add(stocksFlexTable); mainPanel.add(addPanel); mainPanel.add(lastUpdatedLabel); 四.把main panel與Root panel做起關聯,因為要把所有widgets與 panels放進html page裡面
,一定要透過Root panel
// Associate the Main panel with the HTML host page. RootPanel.get("stockList").add(mainPanel);
也要import com.google.gwt.user.client.ui.RootPanel;,利用eclipse按左鍵
五.最後把游標提醒加在input box,以提醒使用者開始輸入資料。
// Move cursor focus to the input box. newSymbolTextBox.setFocus(true);
最後再run as application來測試。
沒有留言:
張貼留言