[JavaFX] 绘制简易时钟(一)
效果图
用当前时间创建时钟,绘制表盘。
钟表是静止的。让指针动起来,请参照:绘制简易时钟(二)
主函数文件 ShowClock:
package primier; import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.scene.paint.Color;
import javafx.scene.layout.*;
import javafx.scene.control.*;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.shape.Line;public class ShowClock extends Application {@Override //Override the start method in the Application classpublic void start(Stage primaryStage) {// 创建时钟面板ClockPane clock = new ClockPane();// 当前时间整理为字符串String timeString = clock.getHour() + ":" + clock.getMinute()+ ":" + clock.getSecond();Label lbCurrentTime = new Label(timeString);BorderPane pane = new BorderPane();pane.setCenter(clock);pane.setBottom(lbCurrentTime);// 将时钟字符串设为靠上居中BorderPane.setAlignment(lbCurrentTime, Pos.TOP_CENTER);Scene scene = new Scene(pane, 250,250);primaryStage.setTitle("Display Clock");primaryStage.setScene(scene);primaryStage.show();}public static void main (String[] args) {Application.launch(args);}
}
ClockPane 类
package primier;import java.util.Calendar;
import java.util.GregorianCalendar;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.shape.Line;
import javafx.scene.text.Text;public class ClockPane extends Pane {private int hour;private int minute;private int second;// 时钟面板的宽度和高度private double w = 250, h = 250;/** 用当前时间创建时钟 */public ClockPane() {setCurrentTime();}/** Return hour */public int getHour() { return hour; }/** Return minute */public int getMinute() { return minute; }/** Return second */public int getSecond() { return second; }/** Set the current time for the clock */public void setCurrentTime() {// 用当前时间创建Calendar类Calendar calendar = new GregorianCalendar();this.hour = calendar.get(Calendar.HOUR_OF_DAY);this.minute = calendar.get(Calendar.MINUTE);this.second = calendar.get(Calendar.SECOND);paintClock();}/** 绘制时钟 */protected void paintClock() {double clockRadius = Math.min(w,h)*0.4; // 时钟半径// 时钟中心x, y坐标double centerX = w/2;double centerY = h/2;// 绘制钟表Circle circle = new Circle(centerX, centerY, clockRadius);circle.setFill(Color.WHITE); // 填充颜色circle.setStroke(Color.BLACK); // 笔画颜色Text t1 = new Text(centerX-5, centerY-clockRadius+12,"12");Text t2 = new Text(centerX-clockRadius+3, centerY +5, "9");Text t3 = new Text(centerX+clockRadius-10, centerY+3, "3");Text t4 = new Text(centerX-3, centerY+clockRadius-3,"6");// 秒针double sLength = clockRadius * 0.8;double secondX = centerX + sLength * Math.sin(second * (2 * Math.PI / 60));double secondY = centerY - sLength * Math.cos(second * (2 * Math.PI / 60));Line sLine = new Line(centerX, centerY, secondX, secondY);sLine.setStroke(Color.GRAY);// 分针double mLength = clockRadius * 0.65;double minuteX = centerX + mLength * Math.sin(minute * (2 * Math.PI / 60));double minuteY = centerY - mLength * Math.cos(minute * (2 * Math.PI / 60));Line mLine = new Line(centerX, centerY, minuteX, minuteY);mLine.setStroke(Color.BLUE);// 时针double hLength = clockRadius * 0.5;double hourX = centerX + hLength *Math.sin((hour % 12 + minute / 60.0) * (2 * Math.PI / 12));double hourY = centerY - hLength *Math.cos((hour % 12 + minute / 60.0) * (2 * Math.PI / 12));Line hLine = new Line(centerX, centerY, hourX, hourY);sLine.setStroke(Color.GREEN);// 将之前的结点清空,绘制新创建的结点getChildren().clear();getChildren().addAll(circle, t1, t2, t3, t4, sLine, mLine, hLine);}
}
[JavaFX] 绘制简易时钟(一)相关推荐
- java中有ClockPane类吗,JavaFX实现简易时钟效果(二)
本文实例为大家分享了JavaFX实现简易时钟效果的具体代码,供大家参考,具体内容如下 在前一篇博客中,我们已经绘制了一个静止时钟. 首先进行一个微调:让表盘根据窗口大小自动调整大小: 在 ShowCl ...
- java 简易的闹钟设计_JavaFX实现简易时钟效果
本文实例为大家分享了JavaFX实现简易时钟效果的具体代码,供大家参考,具体内容如下 首先要在面板中显示一个时钟,我们可以设计一个ClockPane类来显示一个时钟. 最终效果: 若要绘制一个时钟,需 ...
- java 简单时钟界面_JavaFX实现简易时钟效果(一)
本文实例为大家分享了javafx实现简易时钟效果的具体代码,供大家参考,具体内容如下 效果图 用当前时间创建时钟,绘制表盘. 钟表是静止的.让指针动起来,请参照: 主函数文件 showclock: p ...
- C#自定义控件四简易时钟
C#自定义控件四简易时钟 效果图: 简易时钟,顾名思义,简单容易,简单到什么程度呢?界面只有数字和指针,甚至连与当前时间都不能匹配!呵呵!就这么简单,学习嘛,从简单开始. 毫无疑问,这里肯定要用到Ti ...
- python怎么画简单图片-Python绘制简易的二维图像
大家好,我是飞向天空的牛. 最近学习了一下用Python绘制简易的二维图像,代码如下图所示:绘图代码 文本如下: import matplotlib.pyplot as plt import nump ...
- 使用canvas绘制动画时钟
一代码 <!DOCTYPE html > <head> <meta charset="UTF-8" ><title>绘制动态时钟&l ...
- python动态时钟代码_python绘制动态时钟
桌面时钟项目描述 1.使用turtle库绘制时钟外形及表针: 2.使用datetime获取系统时间: 3.时钟动态显示 turtle库基本命令 1.turtle.setup()函数:用于启动一个图形窗 ...
- android canvas 画按钮,Android 用Canvas轻松绘制一个时钟
接下来这篇文章主要是结束如何轻松自定义一个View并使用Canvas绘制一个时钟的案例,话不多说先上图瞅瞅,一共实现了两种效果,一种是秒动(秒针一秒走一针).另一种是连动式的,秒针不会停会一直走动,话 ...
- python神奇时钟项目_怎么在Python项目中利用Pygame绘制一个时钟
怎么在Python项目中利用Pygame绘制一个时钟 发布时间:2020-11-30 14:24:30 来源:亿速云 阅读:54 作者:Leah 怎么在Python项目中利用Pygame绘制一个时钟? ...
最新文章
- unicode编码过php的magic_quotes_gpc设置为on的mysql注入与文件写入(待测试)
- Fastq-dump:我的日常命令
- C++ 自己重写Vector
- lt;xliff:ggt;标签
- 三维空间两直线/线段最短距离、线段计算算法 【转】
- 部分 DNS 查询因闰秒 bug 报错
- 【机房收费系统】---组合查询
- 手机端仿ios的银行下拉脚本五
- CDN学习笔记二(技术详解)
- 打造最美HTML5 3D机房(第三季新增资产管理、动环监控)
- python写一个数字字典生成器
- Hadoop之hdfs操作
- 在你的项目中集成 Android pay支付
- 爬取链家网站的北京租房信息
- Access转出到Mysql,咱自己动手丰衣足食.. -- 纯JS代码
- 小学生信息与未来 2022 题解
- 汽车 Flexry总线-笔记
- 浅谈社交电商产品设计的10个深刻的知识
- vue实现星级评价及上传多张图片等功能(类似淘宝商品评价页面)
- 创业十年,静静地反思zz