文档章节

APP开始停止时器

CarlDing
 CarlDing
发布于 2015/12/04 19:24
字数 278
阅读 18
收藏 0

package cn.oracle1;

import java.text.SimpleDateFormat;
import java.util.Date;

import javafx.application.Application;
import javafx.application.Platform;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class TimeDemo extends Application {
 boolean boo = false;
 Thread thread;

 @Override
 public void start(Stage stage) throws Exception {
  // 声明一个
  VBox box = new VBox(10);
  box.setAlignment(Pos.CENTER);
  // 添加一个文本
  final Label label = new Label("显示时间");
  box.getChildren().add(label);

  HBox hbox = new HBox(10);
  hbox.setAlignment(Pos.CENTER);
  Button btn1 = new Button("启动");
  Button btn2 = new Button("停止");
  hbox.getChildren().addAll(btn1, btn2);

  // 声明一个内部的线程
  class TimeThread extends Thread {
   @Override
   public void run() {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    while (boo) {
     String str = sdf.format(new Date());
     System.err.println(str);
     Platform.runLater(new Runnable() {
      @Override
      public void run() {
       label.setText(str);// 设置上面的文本
      }
     });
     try {
      Thread.sleep(1000);
     } catch (InterruptedException e) {
      e.printStackTrace();
     }
    }
    //如果退出循环时设置thread=null
    thread = null;
   }
  }

  // 给btn1添加事件
  btn1.setOnAction(new EventHandler<ActionEvent>() {
   public void handle(ActionEvent event) {
    boo = true;
    if (thread == null) {
     System.err.println("启动。。。");
     thread = new TimeThread();
     thread.start();
    }else{
     System.err.println("已经启动了.....");
    }
   }
  });

  btn2.setOnAction(new EventHandler<ActionEvent>() {
   public void handle(ActionEvent event) {
    boo = false;
   }
  });

  box.getChildren().add(hbox);
  // 添加用于显示的对象
  Scene scene = new Scene(box, 300, 300);
  stage.setScene(scene);
  stage.show();
 }

 public static void main(String[] args) {
  launch(args);
 }

 // 程序用户点X号关闭时,会调用这个方法
 @Override
 public void stop() throws Exception {
  boo = false;
  super.stop();
 }
}

© 著作权归作者所有

共有 人打赏支持
CarlDing
粉丝 5
博文 106
码字总数 78103
作品 0
济南
其他
私信 提问
安卓接收耳机按键控制音频播放

全栈工程师开发手册 (作者:栾鹏) 安卓教程全解 如今连接移动设备的耳机上基本都有按键,来控制音频的播放,暂停,下一首,上一首,或电话的拨打,视频的播放等功能。而外置媒体按键的按下...

luanpeng825485697
2017/11/21
0
0
安卓 10 周岁了:这些消失的经典 APP 你还记得吗?

来自:太平洋电脑网 作者:Aimo 链接:http://pcedu.pconline.com.cn/1005/10051864_all.html 不知不觉,安卓系统已经迈入到第十个年头了。在很多老网友的印象中,iOS和安卓两大系统纵横移动...

uzv80px5v412ne
2017/12/05
0
0
安卓 10 岁了:这些消失的经典 APP 你还记得吗?

不知不觉,安卓系统已经迈入到第十个年头了。在很多老网友的印象中,iOS和安卓两大系统纵横移动市场,似乎也就是这几年的事,但仔细一查历史,2008年9月正式发布的安卓,已经是实打实十周岁的...

局长
2017/10/09
5.4K
25
[洪流学堂]Hololens开发高级篇3:语音(Voice)

本教程基于Unity2017.2及Visual Studio 2017 本教程编写时间:2017年12月8日 本文内容提要 设计语音命令并针对Hololens语音引擎优化 让用户知道可以用什么语音命令 听到用户的语音命令后给出...

zhenghongzhi6
2017/12/08
0
0
主机IIC总线系统_IIC总线原理解析

主机IIC总线系统IIC总线原理解析。 图11-1给出一个由MCU作为主机,通过IIC总线带3个从机的单主机IIC总线系统。这是最常用、最典型的IIC总线连接方式。 物理结构上,IIC系统由一条串行数据线S...

renlong_cdut的博客
2017/12/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

开源 java CMS - FreeCMS2.8 自定义标签 sitePath

项目地址:http://www.freeteam.cn/ sitePath 从FreeCMS 2.4开始支持 按上下级顺序提取指定站点的所属站点。 参数 说明 id 站点id sourcepath 站点源文件目录名 返回值 说明 site 站点对象,...

freeteam
31分钟前
1
0
2019 年最好的 7 款虚拟私人网络服务

糟糕的数据安全会带来极大的代价,特别是对企业而言。它会大致大规模的破坏并影响你的品牌声誉。尽管有些企业可以艰难地收拾残局,但仍有一些企业无法从事故中完全恢复。不过现在,你很幸运地...

linuxCool
今天
6
0
OSChina 周一乱弹 —— 加油,还有11个小时就下班了

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @_全村的希望 :吴亦凡把大碗面正儿八经做成单曲了,你别说,还挺好听 《大碗宽面》- 吴亦凡 手机党少年们想听歌,请使劲儿戳(这里) @tom_t...

小小编辑
今天
629
16
C++ vector和list的区别

1.vector数据结构 vector和数组类似,拥有一段连续的内存空间,并且起始地址不变。 因此能高效的进行随机存取,时间复杂度为o(1); 但因为内存空间是连续的,所以在进行插入和删除操作时,会造...

shzwork
今天
7
0
Spring之invokeBeanFactoryPostProcessors详解

Spring的refresh的invokeBeanFactoryPostProcessors,就是调用所有注册的、原始的BeanFactoryPostProcessor。 相关源码 public static void invokeBeanFactoryPostProcessors(Configu......

cregu
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部