请教高手一个Java的类型用法。
高手,您好:
小弟弄的这个类型的全部代码如下:
希望高手能够点拨小弟:
如果小弟希望能够通过“代码调用”出来上面类型的计时功能,小弟应该怎么修改上面的类型?
现在看来,这个类型是需要start按钮的点击,之后开启Timer函数的跳动,让程序的计时功能产生。
现在小弟问的是:
上面的代码怎么修改,能够让小弟在一个上层类型中调用这里的类型。
并且,可以以小弟的上层代码调用为本代码类型的起跑时刻?
希望能够有高手帮帮我。
谢谢高手!!
小弟弄的这个类型的全部代码如下:
package c_port_packageBJTeacher;
import javax.swing.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.*;
import java.util.Date;
import java.text.SimpleDateFormat;
public class StopWatch extends JFrame {
JButton btnStart, btnStop;
JLabel label;
Timer timer;//计时器
public StopWatch() {
label = new JLabel("00:00:00.000");
btnStart = new JButton("start");
btnStop = new JButton("stop");
final int delay = 100;//时间间隔(动作事件间延迟的毫秒数)
final Date startTime = new Date();//类 Date 表示特定的瞬间,精确到毫秒
final SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss.S");//时间格式化
final Action taskPerformer = new AbstractAction() {//计时器动作事件的侦听器
public void actionPerformed(ActionEvent evt) {
/*
* System.currentTimeMillis() 返回以毫秒为单位的当前时间; 时区为当前所在的时区 北京时间东8区
* startTime.getTime() 返回自 1970/1/1 00:00:00 GMT 以来此 Date 对象表示的毫秒数; 时区为本初子午线所在的时区可以当做东0区
* 28800000 是8小时的毫秒数 因为前面两种方法取得的毫秒数不在同一时区 所以必须得统一 即减去相差的8个时区的8小时的毫秒数
*
* 这个是该程序的重点难点之处,请参照API中关于日期时间类的介绍
*/
Date d = new Date(System.currentTimeMillis()
- startTime.getTime() - 28800000);
label.setText(sdf.format(d));//将时间格式化后显示在标签上
label.repaint();//重新绘制标签
}
};
btnStart.addActionListener(new ActionListener() {//按钮“start” 事件处理
public void actionPerformed(ActionEvent evt) {
startTime.setTime(new Date().getTime());//重置时间
/*创建一个以taskPerformer为动作侦听器,动作事件延迟为delay毫秒的计时器
*即每隔0.1(delay = 100)秒触发一次事件
* 这个Timer类,具体用法自己查API
*/
timer = new Timer(delay, taskPerformer);
timer.start();//启动计时器
}
});
btnStop.addActionListener(new ActionListener() {//按钮“stop” 事件处理
public void actionPerformed(ActionEvent evt) {
if (timer != null && timer.isRunning())//如果计时器为创建或不在运行状态下
timer.stop();//停止计时器 ;若计时器不存在或没有运行则会抛出异常所以要先判断一下
}
}); Container c = getContentPane();
c.add(label, BorderLayout.NORTH);
c.add(btnStart, BorderLayout.CENTER);
c.add(btnStop, BorderLayout.SOUTH);
} public static void main(String[] args) {
//下面 自己查看API或者baidu或者google,主要在于自己多动手
javax.swing.SwingUtilities.invokeLater(new Runnable() {//AWT 事件指派线程上的异步执行
public void run() {
createAndShowGUI();//作用在于更新组件及刷新计时器
}
}); } private static void createAndShowGUI() {
StopWatch window = new StopWatch();
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.pack();
window.setVisible(true);
}
}希望高手能够点拨小弟:
如果小弟希望能够通过“代码调用”出来上面类型的计时功能,小弟应该怎么修改上面的类型?
现在看来,这个类型是需要start按钮的点击,之后开启Timer函数的跳动,让程序的计时功能产生。
现在小弟问的是:
上面的代码怎么修改,能够让小弟在一个上层类型中调用这里的类型。
并且,可以以小弟的上层代码调用为本代码类型的起跑时刻?
希望能够有高手帮帮我。
谢谢高手!!
...全文
相关推荐
Java 泛型总结(一):基本用法与类型擦除
本文主要介绍了Java泛型的使用以及类型擦除相关的问题。具有很好的参考价值。下面跟着小编一起来看下吧
Java泛型 T的用法
<T> T表示返回值是一个泛型,传递啥,就返回啥类型的数据,而单独的T就是表示限制你传递的参数类型,这个案例中,通过一个泛型的返回方式,获取每一个集合中的第一个数据, 通过返回值<T> T和T的两种方法实现 <T> T 用法 这个<T> T 表示的是返回值T是泛型,T是一个占位符,用来告诉编译器,这个东西先给我留着,等我编译的时候,告诉你。 p...
java return用法实例详解
在本篇文章里小编给大家整理的是关于java return用法以及相关知识点总结,需要的朋友们参考下。
Java泛型和Class类用法示例
主要介绍了Java泛型和Class类用法,结合实例形式分析了java使用泛型限制class类避免强制类型转换相关操作技巧,需要的朋友可以参考下
java Beanutils.copyProperties( )用法详解
主要介绍了java Beanutils.copyProperties( )用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧


Java SE
