Mobile:NEWS |
2002年9月13日 10:13 PM 更新
|
ビジネスiアプリ入門(5)
待ち受けビジネスIMのクライアント(iアプリ)の作成(3/4)
前のページ
状態表示画面
状態表示画面(StateViewPanel)には、2つの機能を持たせます。1つは初回登録と同様にソフトキーによって画面遷移する機能で、もう1つは一定時間置きに状態の更新とメッセージの受信をする機能です。
ソフトキーによって、状態の更新画面(ChangeStatePanel)とメッセージの送信画面(SendMessagePanel)に遷移します。
class StateViewPanel extends Panel implements SoftKeyListener, Runnable {
ListBox memberview;
StateViewPanel() {
setTitle("ビジネスIM");
memberview = new ListBox(ListBox.SINGLE_SELECT, 6);
memberview.setItems(data.getMemberNames());
add(memberview);
// ソフトキーのラベルを設定し、ソフトキー受け取りを有効にする
setSoftLabel(Frame.SOFT_KEY_1, "状態"); // 状態変更
setSoftLabel(Frame.SOFT_KEY_2, "送信"); // メッセージ送信
setSoftKeyListener(this);
Display.setCurrent(this);
// 一定時間置きに更新するスレッドを起動する
new Thread(this).start();
}
public void softKeyPressed(int key) {
if (key == Frame.SOFT_KEY_1) { // 状態変更
new ChangeStatePanel(this);
} else if (key == Frame.SOFT_KEY_2) { // メッセージ送信
new SendMessagePanel(this);
}
}
public void softKeyReleased(int key) {
}
// 一定時間置きに更新するスレッド処理
public void run() {
for (;;) {
if (Display.getCurrent() == this) {
Message[] message = network.update(data); // dataを更新する
writeData(data); // dataをスクラッチパッドに書き出す
memberview.setItems(data.getMemberNames()); // dataを画面に反映する
new ReceiveMessagePanel(this, message);
}
try {
Thread.sleep(10 * 1000); // 10秒待ち
} catch (Exception e) {
}
}
}
状態表示画面
前半部分は初回登録画面とほぼ同じですが、スレッドを生成し起動することで、一定時間おきに更新処理をさせています。更新後にデータをスクラッチパッドに書き出す処理をした後と、メッセージ表示画面(ReceiveMessagePanel)に遷移させます。
状態変更画面
状態変更画面(ChangeStatePanel)は、状態表示画面(StateViewPanel)から遷移してきます。状態の選択にはListBoxを使い、あらかじめSTATE_LISTで設定した状態の中から選択するようにします。ソフトキーが押された場合、OKであれば状態変更処理をした後、指定された画面(今回の場合状態表示画面(StateViewPanel))に戻ります。
class ChangeStatePanel extends Panel implements SoftKeyListener {
Panel back;
ListBox state;
String[] STATE_LIST = { "仕事中", "休憩中", "会議中", "外出中", "帰宅" };
ChangeStatePanel(Panel back) {
this.back = back;
setTitle("状態変更");
add(new Label("状態"));
state = new ListBox(ListBox.CHOICE);
state.setItems(STATE_LIST);
state.select(0);
add(state);
setSoftLabel(Frame.SOFT_KEY_1, "OK");
setSoftLabel(Frame.SOFT_KEY_2, "中止");
setSoftKeyListener(this);
Display.setCurrent(this);
}
public void softKeyPressed(int key) {
if (key == Frame.SOFT_KEY_1) {
String st = state.getItem(state.getSelectedIndex());
network.sendState(data.myname, st);
}
Display.setCurrent(back);
}
public void softKeyReleased(int key) {
}
}
状態変更画面
[福野泰介, ITmedia]
Copyright © ITmedia, Inc. All Rights Reserved.
前のページ
| 3/4 | 次のページ