fork(1) download
  1. import java.util.*;
  2. import org.eclipse.swt.*;
  3. import org.eclipse.swt.events.*;
  4. import org.eclipse.swt.layout.*;
  5. import org.eclipse.swt.widgets.*;
  6.  
  7. public class MyWidget {
  8. DateTime time; // デジタル時計
  9. DateTime calendar; // カレンダー
  10.  
  11. public MyWidget() {
  12. Display display = new Display();
  13. Shell shell = new Shell(display);
  14. RowLayout layout = new RowLayout();
  15. // 縦に部品が並ぶようにする.
  16. layout.type = SWT.VERTICAL;
  17. shell.setLayout(layout);
  18. shell.setText("MyWidget");
  19. time = new DateTime(shell, SWT.TIME);
  20. calendar = new DateTime(shell, SWT.CALENDAR);
  21. shell.pack();
  22. shell.open();
  23. Runnable runnable = new Runnable() { // タイマースレッド(http://y...content-available-to-author-only...y.com/eclipse/2005/11/ui_949c.html)
  24. @Override public void run() {
  25. Display display = Display.getCurrent();
  26. if (!display.isDisposed()) {
  27. // タイマースレッドを非同期で実行する.
  28. display.asyncExec(new Runnable() {
  29. @Override public void run() {
  30. // 現在時刻を取得して, デジタル時計に値を設定する.
  31. Calendar now = Calendar.getInstance();
  32. time.setHours(now.get(Calendar.HOUR_OF_DAY));
  33. time.setMinutes(now.get(Calendar.MINUTE));
  34. time.setSeconds(now.get(Calendar.SECOND));
  35. Display display = Display.getCurrent();
  36. if (!display.isDisposed()) {
  37. // 500msecごとに自分をコールすることで, デジタル時計が進むようにする.
  38. display.timerExec(500, this);
  39. }
  40. }
  41. });
  42. }
  43. }
  44. };
  45. // タイマースレッドを起動させるきっかけを与える.
  46. if(!display.isDisposed()) {
  47. display.timerExec(500, runnable);
  48. }
  49. for( ; !shell.isDisposed(); ) {
  50. if(!display.readAndDispatch()) {
  51. display.sleep();
  52. }
  53. }
  54. display.dispose();
  55. }
  56.  
  57. public static void main(String[] args) {
  58. new MyWidget();
  59. }
  60. }
Not running #stdin #stdout 0s 0KB
stdin
Standard input is empty
stdout
Standard output is empty