介绍
这篇文章将为大家详细讲解有关使用JavaFX如何实现一个时钟效果,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
具体内容如下
<>强效果图强>
用当前时间创建时钟,绘制表盘。
钟表是静止的。让指针动起来,请参照:绘制简易时钟(二)
主函数文件ShowClock:
包最佳时期的; 进口javafx.application.Application; 进口javafx.geometry.Insets; 进口javafx.geometry.Pos; 进口javafx.scene.Scene; 进口javafx.stage.Stage; 进口javafx.scene.paint.Color; 进口javafx.scene.layout。*; 进口javafx.scene.control。*; 进口javafx.scene.image.Image; 进口javafx.scene.image.ImageView; 进口javafx.scene.shape.Line; 公开课ShowClock扩展应用程序{ @Override//覆盖方法在应用程序类 公共空间开始(primaryStage阶段){//创建时钟面板 ClockPane时钟=new ClockPane ();//当前时间整理为字符串 字符串timeString=clock.getHour () +“:“+ clock.getMinute () +“:“+ clock.getSecond (); 标签lbCurrentTime=新标签(timeString); BorderPane窗格=new BorderPane (); pane.setCenter(时钟); pane.setBottom (lbCurrentTime);//将时钟字符串设为靠上居中 BorderPane。setAlignment (lbCurrentTime Pos.TOP_CENTER); 现场场景=新场景(窗格中,250250); primaryStage.setTitle(“显示Clock"); primaryStage.setScene(现场); primaryStage.show (); } 公共静态void main (String [] args) { Application.launch (args); } }
ClockPane类
包最佳时期的; 进口java.util.Calendar; 进口java.util.GregorianCalendar; 进口javafx.scene.layout.Pane; 进口javafx.scene.paint.Color; 进口javafx.scene.shape.Circle; 进口javafx.scene.shape.Line; 进口javafx.scene.text.Text; 公开课ClockPane扩展面板{ 私人int小时; 私人int分钟; 私人int第二;//时钟面板的宽度和高度 私人双w=250 h=250;/* *用当前时间创建时钟*/公共ClockPane () { setCurrentTime (); }/* *返回小时*/公共int getHour(){返回时间;}/* *返回*/分钟 公共int getMinute(){返回分钟;}/* *返回第二*/公共int getSecond(){返回第二;}/* *设置当前时间时钟*/公共空间setCurrentTime () {//用当前时间创建日历类 日历日历=new GregorianCalendar (); 这一点。小时=calendar.get (Calendar.HOUR_OF_DAY); 这一点。分钟=calendar.get (Calendar.MINUTE); 这一点。第二个=calendar.get (Calendar.SECOND); paintClock (); }/* *绘制时钟*/保护无效paintClock () { 双clockRadius=Math.min (w h) * 0.4;//时钟半径//时钟中心x, y坐标 双centerX=w/2; 双centerY=h/2;//绘制钟表 圈圆=new圆(centerX, centerY clockRadius); circle.setFill (Color.WHITE);//填充颜色 circle.setStroke (Color.BLACK);//笔画颜色 文本t1=新的文本(centerX-5 centerY-clockRadius + 12,“12“); 文本t2=新的文本(centerX-clockRadius + 3, centerY + 5,“9”); 文本t3=新的文本(centerX + clockRadius-10 centerY + 3,“3”); 文本t4=new文本(centerX-3 centerY + clockRadius-3,“6“);//秒针 双sLength=clockRadius * 0.8; 双secondX=centerX + sLength *数学。罪(第二*(2 *数学。π/60)); 双secondY=centerY - sLength *数学。因为数学(第二* (2 *。π/60)); 样条曲线=new线(centerX, centerY, secondX secondY); sLine.setStroke (Color.GRAY);//分针 双mLength=clockRadius * 0.65; 双minuteX=centerX + mLength *数学。罪(分钟*(2 *数学。π/60)); 双minuteY=centerY - mLength *数学。因为(分钟*(2 *数学。π/60)); 行mLine=新行(centerX、centerY minuteX, minuteY); mLine.setStroke (Color.BLUE);//时针 双hLength=clockRadius * 0.5; 双hourX=centerX + hLength * 数学。sin((12小时% +分钟/60.0)*(2 *数学。π/12)); 双胡瑞=centerY - hLength * 数学。因为((12小时% +分钟/60.0)*(2 *数学。π/12)); 线=new线(centerX, centerY hourX,胡瑞); sLine.setStroke (Color.GREEN);//将之前的结点清空,绘制新创建的结点 .clear getChildren () (); getChildren ()。addAll(圆,t1、t2、t3、t4,样条曲线,mLine,线); } }
关于使用JavaFX如何实现一个时钟效果就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。