Java Tutorial/SWT/SWT Timer

Материал из Java эксперт
Перейти к: навигация, поиск

17. Create one repeating timer

   <source lang="java">

/*******************************************************************************

* Copyright (c) 2000, 2004 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
*     IBM Corporation - initial API and implementation
*******************************************************************************/

import org.eclipse.swt.graphics.Point; import org.eclipse.swt.graphics.Rectangle; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; public class TimerRepeating {

 public static void main(String[] args) {
   final Display display = new Display();
   final Shell shell = new Shell(display);
   final int time = 500;
   Runnable timer = new Runnable() {
     public void run() {
       Point point = display.getCursorLocation();
       Rectangle rect = shell.getBounds();
       if (rect.contains(point)) {
         System.out.println("In");
       } else {
         System.out.println("Out");
       }
       display.timerExec(time, this);
     }
   };
   display.timerExec(time, timer);
   
   shell.setSize(200, 200);
   shell.open();
   while (!shell.isDisposed()) {
     if (!display.readAndDispatch())
       display.sleep();
   }
   display.dispose();
 }

}</source>





17. Create two one shot timers (s)

   <source lang="java">

import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; public class TimerOneShot2000 {

 public static void main(String[] args) {
   Display display = new Display();
   Shell shell = new Shell(display);
   shell.setSize(200, 200);
   shell.open();
   display.timerExec(2000, new Runnable() {
     public void run() {
       System.out.println("2000");
     }
   });
   while (!shell.isDisposed()) {
     if (!display.readAndDispatch())
       display.sleep();
   }
   display.dispose();
 }

}</source>





17. Stop a repeating timer when a button is pressed

   <source lang="java">

/*******************************************************************************

* Copyright (c) 2000, 2004 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
*     IBM Corporation - initial API and implementation
*******************************************************************************/

/*

* Display example snippet: stop a repeating timer when a button is pressed
*
* For a list of all SWT example snippets see
* http://www.eclipse.org/swt/snippets/
*/

import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.layout.RowData; import org.eclipse.swt.layout.RowLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Shell; public class TimeStopWhenButtonPressing {

 public static void main(String[] args) {
   final Display display = new Display();
   final Color red = display.getSystemColor(SWT.COLOR_RED);
   final Color blue = display.getSystemColor(SWT.COLOR_BLUE);
   Shell shell = new Shell(display);
   shell.setLayout(new RowLayout());
   Button button = new Button(shell, SWT.PUSH);
   button.setText("Stop Timer");
   final Label label = new Label(shell, SWT.BORDER);
   label.setBackground(red);
   final int time = 500;
   final Runnable timer = new Runnable() {
     public void run() {
       if (label.isDisposed())
         return;
       Color color = label.getBackground().equals(red) ? blue : red;
       label.setBackground(color);
       display.timerExec(time, this);
     }
   };
   display.timerExec(time, timer);
   button.addListener(SWT.Selection, new Listener() {
     public void handleEvent(Event event) {
       display.timerExec(-1, timer);
     }
   });
   button.pack();
   label.setLayoutData(new RowData(button.getSize()));
   shell.pack();
   shell.open();
   while (!shell.isDisposed()) {
     if (!display.readAndDispatch())
       display.sleep();
   }
   display.dispose();
 }

}</source>