1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      利用JavaFX制作一個簡單的時鐘-創(chuàng)新互聯(lián)

      這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)利用JavaFX制作一個簡單的時鐘,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

      創(chuàng)新互聯(lián)始終堅持【策劃先行,效果至上】的經(jīng)營理念,通過多達十載累計超上千家客戶的網(wǎng)站建設(shè)總結(jié)了一套系統(tǒng)有效的全網(wǎng)營銷解決方案,現(xiàn)已廣泛運用于各行各業(yè)的客戶,其中包括:成都混凝土攪拌站等企業(yè),備受客戶贊許。

      首先要在面板中顯示一個時鐘,我們可以設(shè)計一個ClockPane類來顯示一個時鐘。


      最終效果:


      利用JavaFX制作一個簡單的時鐘

      若要繪制一個時鐘,需要繪制一個圓并為秒鐘、分鐘和小時繪制三個指針。為了畫一個指針,需要確定一條直線的兩端:一端是時鐘的中央,位于(centerX,centerY);另外一端位于(endX,endY),由一下公式來確定:


      endX=centerX+handLength×sin(θ)
      endY=centerY-handLength×cos(θ)

      (其中θ是指針和豎直方向12點的夾角)

      因為一分鐘有60秒,所以第2個指針的角度是:second×(2π/60)
      分鐘的位置由分鐘和秒鐘來決定。包含秒數(shù)的確切分鐘數(shù)是minu+second/60。例如,如時間是3分30秒,那么總的分鐘數(shù)就是3.5。由于一小時有60分鐘,因此分針的角度是: (minute+second/60)×(2π/12)

      由于一個圓被分為12個小時,所以時針的角度是: (hour+minute/60+second/(60×60))×(2π/12)

      為了簡化計算,在計算分針和時針角度的時候,可以忽略秒針,因為它們數(shù)字太小,基本可以忽略。因此,秒針、分針以及時針的端點可以如下計算:
      secondX = centerX + secondHandLength × sin(second × (2π/60))
      secondY = centerY - secondHandLength × cos(second × (2π/60))
      minuteX = centerX + minuteHandLength × sin(minute × (2π/60))
      minuteY = centerY - minuteHandLength × cos(minute × (2π/60))
      hourX = centerX + hourHandLength × sin((hour+minute/60) × (2π/12))
      hourX = centerX + hourHandLength × sin((hour+minute/60) × (2π/12))

      這樣就得到了ClockPane類的實現(xiàn)程序:

      package com.company;
      
      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;
      import java.util.Calendar;
      import java.util.GregorianCalendar;
      
      public class ClockPane extends Pane{
       private int hour;
       private int minute;
       private int second;
       private double w=250,h=250;
      
       public ClockPane() {
        setCurrentTime();
       }
      
       public ClockPane(int hour,int minute,int second) {
        this.hour=hour;
        this.minute=minute;
        this.second=second;
        paintClock();
       }
      
       public int getHour() {
        return hour;
       }
      
       public void setHour(int hour) {
        this.hour=hour;
        paintClock();
       }
      
       public int getMinute() {
        return minute;
       }
      
       public void setMinute(int minute) {
        this.minute=minute;
        paintClock();
       }
      
       public int getSecond() {
        return second;
       }
      
       public void setSecond(int second) {
        this.second=second;
        paintClock();
       }
      
       public double getW() {
        return w;
       }
      
       public void setW(double w) {
        this.w=w;
        paintClock();
       }
      
       public double getH() {
        return h;
       }
      
       public void setH(double h) {
        this.h=h;
        paintClock();
       }
      
       public void setCurrentTime() {
        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.8*0.5;
        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 scondX=centerX+sLength*Math.sin(second*(2*Math.PI/60));
        double scondY=centerY-sLength*Math.cos(second*(2*Math.PI/60));
        Line sline=new Line(centerX,centerY,scondX,scondY);
        sline.setStroke(Color.RED);
      
        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)*(2*Math.PI/12));
        Line hline=new Line(centerX,centerY,hourX,hourY);
        hline.setStroke(Color.GREEN);
      
        getChildren().clear();
        getChildren().addAll(circle,t1,t2,t3,t4,sline,mline,hline);
      
       }
      }

      本文名稱:利用JavaFX制作一個簡單的時鐘-創(chuàng)新互聯(lián)
      本文URL:http://www.ef60e0e.cn/article/dgegph.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        深水埗区| 南丰县| 罗定市| 虎林市| 武安市| 库伦旗| 台州市| 安仁县| 始兴县| 恩平市| 中牟县| 温州市| 明光市| 榆社县| 田林县| 宁国市| 阜南县| 广丰县| 瑞丽市| 寿光市| 临沭县| 神农架林区| 菏泽市| 丹巴县| 呼图壁县| 佛学| 和硕县| 江永县| 略阳县| 泰来县| 成安县| 陇川县| 甘孜县| 土默特右旗| 龙川县| 海林市| 东海县| 娄烦县| 泌阳县| 渝北区| 禄丰县|