2009年4月29日水曜日

GWTでTimmerを使ってみる

本日は、下記を読んでいるうちにTimmerクラスを使ってみたくなった。

http://code.google.com/intl/ja/webtoolkit/tutorials/1.6/codeclient.html

これを使ってとりあえず、時計を作ってみる。

本日新たに使ってみたクラスは、

Timer (Google Web Toolkit Javadoc)
これは、定期的に実行するようなことができ、

DateTimeFormat (Google Web Toolkit Javadoc)
これは、日付を文字列に変える事ができ

あと、ついでに

Random

これは、ランダムな数字を生成することができ。

も使ってみる。

とりあえず、自分の作ってみたいイメージどおり物もができた。

ちなみにこんな感じ。
(時計は、もちろんちゃんと動いています。)



こちらのソースコードはこんな感じで書いてみました。

クライアント側の記述の仕方はなんとなくわかってきた感じです。

package com.google.gwt.sample.stockwatcher.client;

import java.util.Date;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.KeyPressEvent;
import com.google.gwt.event.dom.client.KeyPressHandler;
import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.Random;
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.MenuBar;
import com.google.gwt.user.client.ui.MenuItemSeparator;
import com.google.gwt.user.client.ui.MultiWordSuggestOracle;
import com.google.gwt.user.client.ui.PasswordTextBox;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.SuggestBox;
import com.google.gwt.user.client.ui.SuggestionEvent;
import com.google.gwt.user.client.ui.SuggestionHandler;
import com.google.gwt.user.client.ui.TextArea;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;

/**
* Entry point classes define onModuleLoad().
*/
public class StockWatcher implements EntryPoint {
/**
* The message displayed to the user when the server cannot be reached or
* returns an error.
*/
private static final String SERVER_ERROR = "An error occurred while "
+ "attempting to contact the server. Please check your network "
+ "connection and try again.";

/**
* Create a remote service proxy to talk to the server-side Greeting service.
*/
private final GreetingServiceAsync greetingService = GWT
.create(GreetingService.class);

Label timeLabel = new Label();
Label randomNumberLabel = new Label();
Timer t = new Timer() {
public void run() {
timeLabel.setText("時刻:"+DateTimeFormat.getFormat("yyyy/MM/dd HH:mm:ss").format(new Date()));
randomNumberLabel.setText("ランダム数字:"+Random.nextInt(1000));
}
};
/**
* This is the entry point method.
*/
public void onModuleLoad() {
Button stopbtn = new Button("停止");
Button startbtn = new Button("開始");
stopbtn.addClickListener(new ClickListener(){
public void onClick(Widget sender) {
// Create a new timer that calls Window.alert().
t.cancel();
}
});
startbtn.addClickListener(new ClickListener(){
public void onClick(Widget sender) {
// Create a new timer that calls Window.alert().
t.run();
t.scheduleRepeating(500);
}
});

RootPanel.get().add(startbtn);
RootPanel.get().add(stopbtn);
RootPanel.get().add(timeLabel);
RootPanel.get().add(randomNumberLabel);
t.scheduleRepeating(1000);
}


}

0 件のコメント: