import java.util.*;
import org.eclipse.swt.*;
import org.eclipse.swt.events.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;
public class MyWidget {
DateTime time; // デジタル時計
DateTime calendar; // カレンダー
public MyWidget() {
Display display = new Display();
Shell shell = new Shell(display);
RowLayout layout = new RowLayout();
// 縦に部品が並ぶようにする.
layout.type = SWT.VERTICAL;
shell.setLayout(layout);
shell.setText("MyWidget");
time = new DateTime(shell, SWT.TIME);
calendar = new DateTime(shell, SWT.CALENDAR);
shell.pack();
shell.open();
Runnable runnable
= new Runnable() { // タイマースレッド(http://y...content-available-to-author-only...y.com/eclipse/2005/11/ui_949c.html) @Override public void run() {
Display display = Display.getCurrent();
if (!display.isDisposed()) {
// タイマースレッドを非同期で実行する.
@Override public void run() {
// 現在時刻を取得して, デジタル時計に値を設定する.
time.
setHours(now.
get(Calendar.
HOUR_OF_DAY)); time.
setMinutes(now.
get(Calendar.
MINUTE)); time.
setSeconds(now.
get(Calendar.
SECOND)); Display display = Display.getCurrent();
if (!display.isDisposed()) {
// 500msecごとに自分をコールすることで, デジタル時計が進むようにする.
display.timerExec(500, this);
}
}
});
}
}
};
// タイマースレッドを起動させるきっかけを与える.
if(!display.isDisposed()) {
display.timerExec(500, runnable);
}
for( ; !shell.isDisposed(); ) {
if(!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}
public static void main
(String[] args
) { new MyWidget();
}
}