亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

(原創 by 徐劍生)《Java Swing之利用簡單的多線程實現動態時鐘》

2019-11-14 21:06:03
字體:
來源:轉載
供稿:網友
(原創 by 徐劍生)《java Swing之利用簡單的多線程實現動態時鐘》 Posted on 2014-09-08 20:31 徐劍生 閱讀(...) 評論(...) 編輯 收藏

注:本文僅供學習和交流

以上是截圖,下面上代碼

第一個類是Circle

package org.xt.util;import java.awt.Point;public class Circle {    PRivate Point centre;    private int radius;    public Circle(Point centre, int radius) {        this.centre = centre;        this.radius = radius;    }    public Point getCentre() {        return centre;    }    public void setCentre(Point centre) {        this.centre = centre;    }    public int getRadius() {        return this.radius;    }    public void setRadius(int radius) {        this.radius = radius;    }}

第二個類是Clock

package org.xt.clock;import java.awt.BasicStroke;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.RenderingHints;import java.util.Calendar;import javax.swing.JComponent;import javax.swing.JFrame;import javax.swing.JPanel;@SuppressWarnings("serial")public class Clock extends JComponent implements Runnable {    private int radius;    public Clock(int radius) {        this.radius = radius;    }    public void paint(Graphics g) {        Graphics2D g2d = (Graphics2D) g;     //這兩句話是去除線條鋸齒的關鍵,至于原理筆者也不清楚,這兩句是筆者從網絡上找來的(就這兩句不是自己寫的,呵呵)        g2d.setStroke(new BasicStroke(1.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL));        g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);     //鐘盤所在的矩形的左上角的坐標        int clockPlateX = 0;        int clockPlateY = 0;        g2d.setColor(Color.GRAY);     //畫兩個同心圓盤,作為時鐘的邊框        g2d.drawOval(clockPlateX, clockPlateY, this.radius * 2, this.radius * 2);        g2d.drawOval(clockPlateX + 5, clockPlateY + 5, this.radius * 2 - 10, this.radius * 2 - 10);     //圓心坐標        int centreX = this.radius;        int centreY = centreX;        g2d.setStroke(new BasicStroke(0.8f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL));     //這是鐘盤中心的那個點        g2d.fillOval(centreX - 3, centreY - 3, 6, 6);        g2d.setStroke(new BasicStroke(2.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL));     //以下開始畫大刻度,共有12個,表示有12個小時,基準是9時所指的刻度        double degree = 0;        double radian = Math.toRadians(degree);        for (int i = 0; i < 12; ++i) {       //計算刻度線相對位置位于左邊的點            int leftX = (int) ((double) centreX - (this.radius - 15) * Math.cos(radian));            int leftY = (int) ((double) centreY - (this.radius - 15) * Math.sin(radian));       //計算刻度線相對位置位于右邊的點            int rightX = (int) ((double) centreX - (this.radius - 25) * Math.cos(radian));            int rightY = (int) ((double) centreY - (this.radius - 25) * Math.sin(radian));                  g2d.drawLine(leftX, leftY, rightX, rightY);            degree += 30;       //將角度轉換為弧度            radian = Math.toRadians(degree);        }        g2d.setStroke(new BasicStroke(1.5f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL));             //以下開始畫小刻度,共有60-12=48個,基準是0時所指的刻度        degree = 0;        radian = Math.toRadians(degree);        for (int i = 0; i < 60; ++i) {         //此條件在于避免小刻度和大刻度重復            if (i != 0 && degree % 30 != 0) {                int leftX = (int) ((double) centreX - (this.radius - 15) * Math.cos(radian));                int leftY = (int) ((double) centreY - (this.radius - 15) * Math.sin(radian));                int rightX = (int) ((double) centreX - (this.radius - 17) * Math.cos(radian));                int rightY = (int) ((double) centreY - (this.radius - 17) * Math.sin(radian));                g2d.drawLine(leftX, leftY, rightX, rightY);            }        //每次增加6度            degree += 360 / 60;            //將角度轉換為弧度            radian = Math.toRadians(degree);        }     //獲取當前的時,分,秒(Date類已經被淘汰,這里使用Calendar)        Calendar cal = Calendar.getInstance();        int second = cal.get(Calendar.SECOND);        int minute = cal.get(Calendar.MINUTE);        int hour = cal.get(Calendar.HOUR_OF_DAY);        if (hour > 12) {            hour = hour % 12;        }     //計算秒針當前距離開始位置的弧度,其余兩句分別是分針和時針        double secondProp = Math.toRadians(second * (360 / 60));        double minuteProp = Math.toRadians(minute * (360 / 60));        double hourProp = Math.toRadians((hour + minuteProp / (2 * Math.PI)) * (360 / 12));        int leftX = (int) (centreX + (this.radius - 25) * Math.sin(secondProp));        int leftY = (int) (centreY - (this.radius - 25) * Math.cos(secondProp));        g2d.setStroke(new BasicStroke(1.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL));        g.drawLine(leftX, leftY, centreX, centreY);        leftX = (int) (centreX + (this.radius - 45) * Math.sin(minuteProp));        leftY = (int) (centreY - (this.radius - 45) * Math.cos(minuteProp));        g2d.setStroke(new BasicStroke(1.5f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL));        g.drawLine(leftX, leftY, centreX, centreY);        leftX = (int) (centreX + (this.radius - 70) * Math.sin(hourProp));        leftY = (int) (centreY - (this.radius - 70) * Math.cos(hourProp));        g2d.setStroke(new BasicStroke(2.5f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL));        g.drawLine(leftX, leftY, centreX, centreY);    }    public void run() {        while (true) {            try {                Thread.sleep(1000);            } catch (InterruptedException e) {                e.printStackTrace();            }            this.repaint();        }    }    public static void main(String[] args) {        JFrame frame = new JFrame();        JPanel panel = new JPanel(new BorderLayout());        frame.setContentPane(panel);        Clock clock = new Clock(150);        new Thread(clock).start();        panel.add(clock, BorderLayout.CENTER);        frame.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE);        frame.setSize(600, 400);        frame.setVisible(true);    }}

呵呵,水平有限,代碼寫的比較亂

——寫于2014-09-08 20:30:00上下


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲欧美日韩成人| 国产精品久久久久久久一区探花| 国产精品伦子伦免费视频| 欧美wwwwww| 国产性猛交xxxx免费看久久| 成人a免费视频| 91国产美女在线观看| 欧美日韩亚洲精品一区二区三区| 亚洲欧洲在线视频| 久久久久五月天| 美日韩在线视频| 亚洲欧美激情精品一区二区| 性色av一区二区三区| 亚洲欧美日韩国产成人| 91久久在线视频| 亚洲的天堂在线中文字幕| 欧美福利视频在线| 欧美日韩高清在线观看| 国语自产精品视频在线看| 韩日欧美一区二区| 日韩的一区二区| 九九热99久久久国产盗摄| 亚洲成人激情图| 国内精品久久久久影院 日本资源| 久久亚洲国产精品成人av秋霞| 欧美精品在线观看91| 欧美尺度大的性做爰视频| 一本大道香蕉久在线播放29| 成人激情在线观看| 亚洲福利小视频| 亚洲剧情一区二区| 成人综合国产精品| 97在线观看视频国产| 91中文精品字幕在线视频| 国产精品亚洲综合天堂夜夜| 亚洲第一天堂无码专区| 在线精品国产欧美| 国产一区二区三区直播精品电影| 国产精品9999| 国产91精品久| yw.139尤物在线精品视频| 国产精品久久色| 亚洲一区av在线播放| 成人激情春色网| 日韩av电影手机在线观看| 日韩av网址在线观看| 国产suv精品一区二区三区88区| 亚洲视频在线观看免费| 草民午夜欧美限制a级福利片| 欧美日韩国产91| 久久久久久久爱| 久久久久久久av| 亚洲激情电影中文字幕| 国产精品影片在线观看| 久久伊人精品视频| 欧美老少配视频| 久久久久久久久爱| 欧美性猛交xxxx黑人猛交| 国产成人午夜视频网址| 国产精品高潮在线| 日本不卡免费高清视频| 性金发美女69hd大尺寸| 欧美又大又硬又粗bbbbb| 亚洲福利在线看| 一区二区av在线| 亚洲大胆人体av| 亚洲自拍高清视频网站| 91高清视频在线免费观看| 国产日韩中文字幕在线| 亚洲视频视频在线| 欧美一区二区三区艳史| 精品一区二区电影| 91在线观看免费网站| www.久久久久| 色樱桃影院亚洲精品影院| 欧美久久久精品| 日韩在线观看精品| 亚洲黄色av女优在线观看| 亚洲一区二区久久久久久| 国产精品久久在线观看| 久久综合伊人77777| 日韩美女免费视频| 国产欧美va欧美va香蕉在线| 欧美精品一区二区免费| 精品福利视频导航| 欧美成人中文字幕在线| 国产精品黄色影片导航在线观看| 日韩在线免费高清视频| 在线日韩欧美视频| 日韩国产精品亚洲а∨天堂免| 日韩精品视频三区| 国产美女被下药99| 国产成人在线播放| 日韩在线观看免费av| 国模精品一区二区三区色天香| 国内精久久久久久久久久人| 久久精品国亚洲| 在线观看免费高清视频97| 欧美激情图片区| 亚洲美女av在线播放| 日韩第一页在线| 国产精品嫩草视频| 午夜精品久久久久久久99热| 国产精品18久久久久久麻辣| 在线观看日韩欧美| 亚洲国产日韩欧美在线99| 亚洲综合大片69999| 欧美高清激情视频| 久久亚洲精品成人| 亚洲电影免费观看高清完整版在线观看| 亚洲18私人小影院| 国产精品一区二区在线| 91久久久久久久久久久| 亚洲国产精品99| 亚洲高清久久久久久| 亚洲精品久久在线| 亚洲第一网站男人都懂| 欧美性猛交xxxx免费看久久久| 欧美性xxxx在线播放| 7m第一福利500精品视频| 91精品国产电影| 国产一区二区三区在线看| 欧美一区二区三区免费视| 久久精品国产69国产精品亚洲| 美女精品久久久| 久久这里有精品| 91国内精品久久| 久久97久久97精品免视看| 日韩成人激情视频| 国产精品久久久久av免费| 成人网在线视频| 97精品欧美一区二区三区| 中文字幕av一区中文字幕天堂| 欧美精品手机在线| 国产精品自拍偷拍视频| 国产精品第一视频| 日韩av一区二区在线观看| 精品久久久久久久久久久久久久| 久久久久国产一区二区三区| 91wwwcom在线观看| 久久久久久久久久国产精品| 国产精品日日摸夜夜添夜夜av| 欧美老女人性视频| 日韩精品欧美激情| 亚洲美女免费精品视频在线观看| 欧亚精品中文字幕| 久久天天躁夜夜躁狠狠躁2022| 欧美最猛性xxxxx免费| 欧美精品videos另类日本| 国产欧美日韩免费看aⅴ视频| 国产精品一二区| 高清欧美一区二区三区| 亚洲一区二区少妇| 国产精品女人久久久久久| 久久视频国产精品免费视频在线| 国产精品永久在线| 国产成人精品在线视频| 欧美午夜激情视频| 日韩美女在线观看| 综合国产在线视频| 国产精品午夜一区二区欲梦| 国产精品自拍偷拍| 欧美日韩国产成人| 国产日韩欧美在线视频观看|