利用JavaFX制作一个简单的时钟

  介绍

这期内容当中小编将会给大家带来有关利用JavaFX制作一个简单的时钟,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

首先要在面板中显示一个时钟,我们可以设计一个ClockPane类来显示一个时钟。

<强>最终效果:

利用JavaFX制作一个简单的时钟

若要绘制一个时钟,需要绘制一个圆并为秒钟,分钟和小时绘制三个指针。为了画一个指针,需要确定一条直线的两端:一端是时钟的中央,位于(centerX centerY);另外一端位于(endX,恩迪),由一下公式来确定:

<强> (其中θ是指针和竖直方向12点的夹角)

因为一分钟有60秒,所以第2个指针的角度是:第二次×(2π/60)
分钟的位置由分钟和秒钟来决定。包含秒数的确切分钟数是minu +第二/60例。如,如时间是3分30秒,那么总的分钟数就是3.5。由于一小时有60分钟,因此分针的角度是:

由于一个圆被分为12个小时,所以时针的角度是:<强>

为了简化计算,在计算分针和时针角度的时候,可以忽略秒针,因为它们数字太小,基本可以忽略。因此,秒针,分针以及时针的端点可以如下计算:
secondX=centerX + secondHandLength×罪(第二×(2π/60)
secondY=centerY - secondHandLength×cos(第二×(2π/60)
minuteX=centerX + minuteHandLength×罪(分钟×(2π/60)
minuteY=centerY - minuteHandLength×cos(分钟×(2π/60)
hourX=centerX + hourHandLength×罪((小时+分钟/60)×(2π/12))
hourX=centerX + hourHandLength×罪((小时+分钟/60)×(2π/12))

这样就得到了ClockPane类的实现程序:

包com.company;
  
  进口javafx.scene.layout.Pane;
  进口javafx.scene.paint.Color;
  进口javafx.scene.shape.Circle;
  进口javafx.scene.shape.Line;
  进口javafx.scene.text.Text;
  进口java.util.Calendar;
  进口java.util.GregorianCalendar;
  
  公开课ClockPane扩展面板{
  私人int小时;
  私人int分钟;
  私人int第二;
  私人双w=250 h=250;
  
  公共ClockPane () {
  setCurrentTime ();
  }
  
  公共ClockPane (int, int, int二){
  this.hour=小时;
  this.minute=分钟;
  this.second=第二;
  paintClock ();
  }
  
  公共int getHour () {
  返回时间;
  }
  
  公共空间setHour (int小时){
  this.hour=小时;
  paintClock ();
  }
  
  公共int getMinute () {
  返回时间;
  }
  
  公共空间setMinute (int分钟){
  this.minute=分钟;
  paintClock ();
  }
  
  公共int getSecond () {
  返回第二;
  }
  
  公共空间setSecond (int二){
  this.second=第二;
  paintClock ();
  }
  
  公共双getW () {
  返回w;
  }
  
  公共空间环境运输及工务局局长(双w) {
  this.w=w;
  paintClock ();
  }
  
  公共双getH () {
  返回h;
  }
  
  公共空间setH(双h) {
  this.h=h;
  paintClock ();
  }
  
  公共空间setCurrentTime () {
  日历日历=new GregorianCalendar ();
  this.hour=calendar.get (Calendar.HOUR_OF_DAY);
  this.minute=calendar.get (Calendar.MINUTE);
  this.second=calendar.get (Calendar.SECOND);
  paintClock ();
  }
  
  保护无效paintClock () {
  双clockRadius=Math.min (w h) * 0.8 * 0.5;
  双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;
  双scondX=centerX + sLength * sin(第二* (2 * Math.PI/60));
  双scondY=centerY-sLength * Math.cos(第二* (2 * Math.PI/60));
  样条曲线=new线(centerX, centerY, scondX scondY);
  sline.setStroke (Color.RED);
  
  双mLength=clockRadius * 0.65;
  双minuteX=centerX + mLength * sin(分钟* (2 * Math.PI/60));
  双minuteY=centerY-mLength * Math.cos(分钟* (2 * Math.PI)/60);
  行mline=新行(centerX、centerY minuteX, minuteY);
  mline.setStroke (Color.BLUE);
  
  双hLength=clockRadius * 0.5;
  双hourX=centerX + hLength * sin(% 12 +分钟/60.0(小时)* (2 * Math.PI/12));
  双胡瑞=centerY-hLength * Math.cos((% 12 + 60分钟/小时)* (2 * Math.PI/12));
  线=new线(centerX, centerY hourX,胡瑞);
  hline.setStroke (Color.GREEN);
  
  .clear getChildren () ();
  调用getChildren () .addAll(圆,t1、t2、t3、t4样条曲线,mline,线);
  
  }
  }

利用JavaFX制作一个简单的时钟