一个applet计时器 : 定时器 « 图形用户界面 « Java

En
Java
1. 图形用户界面
2. 三维图形动画
3. 高级图形
4. 蚂蚁编译
5. Apache类库
6. 统计图
7. 
8. 集合数据结构
9. 数据类型
10. 数据库JDBC
11. 设计模式
12. 开发相关类
13. EJB3
14. 电子邮件
15. 事件
16. 文件输入输出
17. 游戏
18. 泛型
19. GWT
20. Hibernate
21. 本地化
22. J2EE平台
23. 基于J2ME
24. JDK-6
25. JNDI的LDAP
26. JPA
27. JSP技术
28. JSTL
29. 语言基础知识
30. 网络协议
31. PDF格式RTF格式
32. 映射
33. 常规表达式
34. 脚本
35. 安全
36. Servlets
37. Spring
38. Swing组件
39. 图形用户界面
40. SWT-JFace-Eclipse
41. 线程
42. 应用程序
43. Velocity
44. Web服务SOA
45. 可扩展标记语言
Java 教程
Java » 图形用户界面 » 定时器屏幕截图 
一个applet计时器

/*
 * Copyright (c) 2004 David Flanagan.  All rights reserved.
 * This code is from the book Java Examples in a Nutshell, 3nd Edition.
 * It is provided AS-IS, WITHOUT ANY WARRANTY either expressed or implied.
 * You may study, use, and modify it for any non-commercial purpose,
 * including teaching and use in open-source projects.
 * You may distribute it non-commercially as long as you retain this notice.
 * For a commercial use license, or to purchase the book, 
 * please visit http://www.davidflanagan.com/javaexamples3.
 */

import java.applet.AudioClip;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.net.MalformedURLException;
import java.net.URL;
import java.text.NumberFormat;

import javax.swing.ImageIcon;
import javax.swing.JApplet;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
import javax.swing.Timer;

/**
 * An applet that counts down from a specified time. When it reaches 00:00, it
 * optionally plays a sound and optionally moves the browser to a new page.
 * Place the mouse over the applet to pause the count; move it off to resume.
 * This class demonstrates most applet methods and features.
 */
public class Countdown extends JApplet implements ActionListener, MouseListener {
  long remaining; // How many milliseconds remain in the countdown.

  long lastUpdate; // When count was last updated

  JLabel label; // Displays the count

  Timer timer; // Updates the count every second

  NumberFormat format; // Format minutes:seconds with leading zeros

  Image image; // Image to display along with the time

  AudioClip sound; // Sound to play when we reach 00:00

  // Called when the applet is first loaded
  public void init() {
    // Figure out how long to count for by reading the "minutes" parameter
    // defined in a <param> tag inside the <applet> tag. Convert to ms.
    String minutes = getParameter("minutes");
    if (minutes != null)
      remaining = Integer.parseInt(minutes60000;
    else
      remaining = 600000// 10 minutes by default

    // Create a JLabel to display remaining time, and set some properties.
    label = new JLabel();
    label.setHorizontalAlignment(SwingConstants.CENTER);
    label.setOpaque(true)// So label draws the background color

    // Read some parameters for this JLabel object
    String font = getParameter("font");
    String foreground = getParameter("foreground");
    String background = getParameter("background");
    String imageURL = getParameter("image");

    // Set label properties based on those parameters
    if (font != null)
      label.setFont(Font.decode(font));
    if (foreground != null)
      label.setForeground(Color.decode(foreground));
    if (background != null)
      label.setBackground(Color.decode(background));
    if (imageURL != null) {
      // Load the image, and save it so we can release it later
      image = getImage(getDocumentBase(), imageURL);
      // Now display the image in the JLabel.
      label.setIcon(new ImageIcon(image));
    }

    // Now add the label to the applet. Like JFrame and JDialog, JApplet
    // has a content pane that you add children to
    getContentPane().add(label, BorderLayout.CENTER);

    // Get an optional AudioClip to play when the count expires
    String soundURL = getParameter("sound");
    if (soundURL != null)
      sound = getAudioClip(getDocumentBase(), soundURL);

    // Obtain a NumberFormat object to convert number of minutes and
    // seconds to strings. Set it up to produce a leading 0 if necessary
    format = NumberFormat.getNumberInstance();
    format.setMinimumIntegerDigits(2)// pad with 0 if necessary

    // Specify a MouseListener to handle mouse events in the applet.
    // Note that the applet implements this interface itself
    addMouseListener(this);

    // Create a timer to call the actionPerformed() method immediately,
    // and then every 1000 milliseconds. Note we don't start the timer yet.
    timer = new Timer(1000this);
    timer.setInitialDelay(0)// First timer is immediate.
  }

  // Free up any resources we hold; called when the applet is done
  public void destroy() {
    if (image != null)
      image.flush();
  }

  // The browser calls this to start the applet running
  // The resume() method is defined below.
  public void start() {
    resume();
  // Start displaying updates

  // The browser calls this to stop the applet. It may be restarted later.
  // The pause() method is defined below
  public void stop() {
    pause();
  // Stop displaying updates

  // Return information about the applet
  public String getAppletInfo() {
    return "Countdown applet Copyright (c) 2003 by David Flanagan";
  }

  // Return information about the applet parameters
  public String[][] getParameterInfo() {
    return parameterInfo;
  }

  // This is the parameter information. One array of strings for each
  // parameter. The elements are parameter name, type, and description.
  static String[][] parameterInfo = {
      "minutes""number""time, in minutes, to countdown from" },
      "font""font""optional font for the time display" },
      "foreground""color""optional foreground color for the time" },
      "background""color""optional background color" },
      "image""image URL""optional image to display next to countdown" },
      "sound""sound URL""optional sound to play when we reach 00:00" },
      "newpage""document URL""URL to load when timer expires" }};

  // Start or resume the countdown
  void resume() {
    // Restore the time we're counting down from and restart the timer.
    lastUpdate = System.currentTimeMillis();
    timer.start()// Start the timer
  }

  // Pause the countdown
  void pause() {
    // Subtract elapsed time from the remaining time and stop timing
    long now = System.currentTimeMillis();
    remaining -= (now - lastUpdate);
    timer.stop()// Stop the timer
  }

  // Update the displayed time. This method is called from actionPerformed()
  // which is itself invoked by the timer.
  void updateDisplay() {
    long now = System.currentTimeMillis()// current time in ms
    long elapsed = now - lastUpdate; // ms elapsed since last update
    remaining -= elapsed; // adjust remaining time
    lastUpdate = now; // remember this update time

    // Convert remaining milliseconds to mm:ss format and display
    if (remaining < 0)
      remaining = 0;
    int minutes = (int) (remaining / 60000);
    int seconds = (int) ((remaining % 600001000);
    label.setText(format.format(minutes":" + format.format(seconds));

    // If we've completed the countdown beep and display new page
    if (remaining == 0) {
      // Stop updating now.
      timer.stop();
      // If we have an alarm sound clip, play it now.
      if (sound != null)
        sound.play();
      // If there is a newpage URL specified, make the browser
      // load that page now.
      String newpage = getParameter("newpage");
      if (newpage != null) {
        try {
          URL url = new URL(getDocumentBase(), newpage);
          getAppletContext().showDocument(url);
        catch (MalformedURLException ex) {
          showStatus(ex.toString());
        }
      }
    }
  }

  // This method implements the ActionListener interface.
  // It is invoked once a second by the Timer object
  // and updates the JLabel to display minutes and seconds remaining.
  public void actionPerformed(ActionEvent e) {
    updateDisplay();
  }

  // The methods below implement the MouseListener interface. We use
  // two of them to pause the countdown when the mouse hovers over the timer.
  // Note that we also display a message in the statusline
  public void mouseEntered(MouseEvent e) {
    pause()// pause countdown
    showStatus("Paused")// display statusline message
  }

  public void mouseExited(MouseEvent e) {
    resume()// resume countdown
    showStatus("")// clear statusline
  }

  // These MouseListener methods are unused.
  public void mouseClicked(MouseEvent e) {
  }

  public void mousePressed(MouseEvent e) {
  }

  public void mouseReleased(MouseEvent e) {
  }
}

 
Related examples in the same category
1. 定时器:时钟标签定时器:时钟标签
2. 定时器样本定时器样本
3. 定时器,进度条
4. 一个内部类
5. 一个静态内部类
6. 计时器演示
7. 时间分辨率
www.java2java.com | Contact Us
Copyright 2010 - 2030 Java Source and Support. All rights reserved.
All other trademarks are property of their respective owners.