iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >java实现时钟表盘
  • 947
分享到

java实现时钟表盘

2024-04-02 19:04:59 947人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

本文实例为大家分享了java实现时钟表盘的具体代码,供大家参考,具体内容如下 设计并实现一个模拟时钟功能的应用程序。程序中应显示时针、分针和秒针,并同时以数字形式显示当前时间。 实现

本文实例为大家分享了java实现时钟表盘的具体代码,供大家参考,具体内容如下

设计并实现一个模拟时钟功能的应用程序。程序中应显示时针、分针和秒针,并同时以数字形式显示当前时间。

实现结果:

源代码如下:

//ClockPanel.java
import javax.swing.*;
import java.util.Calendar;  
import java.util.GreGorianCalendar;  
import java.util.Timer;  
import java.util.TimerTask;  
import java.text.SimpleDateFORMat;
import java.util.Locale;  
import java.awt.*;
import java.awt.event.*;

public class ClockPanel extends JPanel{
    private GregorianCalendar calendar;
    private JButton btn;
    private JButton btn2;
    private int currentState=8; 
    private String zone;
    private int hourTemp;
    final int X=320, Y=240, R=120;   // 圆心坐标,半径
    private int xPos,yPos;
    private int hour,minute,second; 
    private int xHour,yHour,xMinute,yMinute,xSecond,ySecond;//表针位置(大端)
    private int xHour1,yHour1,xMinute1,yMinute1,xSecond1,ySecond1;//表针位置(小端)
    private double a_sec,a_min ,a_hour;//角度

    ClockPanel() {   // 创建定时器对象
        Timer t = new Timer();  
        Task task = new Task();  
        t.schedule(task, 0, 1000); 
        setLayout(new BorderLayout(10,20)); 
        btn=new JButton("时区  上");
        btn2=new JButton("时区 下");
        btn.setBorder(BorderFactory.createRaisedBevelBorder());
        btn2.setBorder(BorderFactory.createRaisedBevelBorder());
        btn.setBackground(Color.green);
        btn2.setBackground(Color.green);
        btn.addActionListener(new ButtonListener()); 
        btn2.addActionListener(new ButtonListener()); 
        add(btn,BorderLayout.WEST); 
        add(btn2,BorderLayout.EAST); 
    }
    //相关事件处理
    private class ButtonListener implements ActionListener {
        public void actionPerformed(ActionEvent event) {    

            if (event.getSource()==btn)
                currentState++;
            if (event.getSource()==btn2)
                currentState--;
        }

    }

    public void paintComponent(Graphics g){ 
        super.paintComponent(g); 
        double alfa;    //所画点对应的角度
        Graphics2D g2d=(Graphics2D)g;
        BasicStroke bstroke=new BasicStroke(1.0f);
        BasicStroke bstroke2=new BasicStroke(2.0f);
        BasicStroke bstroke3=new BasicStroke(3.0f);

        g2d.setStroke(bstroke2);
        for(int i=0;i<=360;i+=6)  {
            alfa=Math.toRadians(i);  //角度用弧度表示
            xPos=X+(int)(R*Math.cos(alfa));   // x坐标
            yPos=Y-(int)(R*Math.sin(alfa));   // y坐标
            int xBegin=320+(int)(144*Math.sin(alfa));
            int yBegin=240-(int)(144*Math.cos(alfa));
            int xEnd=320+(int)(159*Math.sin(alfa));
            int yEnd=240-(int)(159*Math.cos(alfa));

            g2d.setColor(Color.BLACK);
            g2d.drawLine(xBegin,yBegin,xEnd,yEnd);

            g2d.setColor(Color.RED);
            switch(i){  // 写时钟数字刻度
                case 0: g2d.drawString("3", xPos,yPos);
                        break;
                case 90: g2d.drawString("12", xPos,yPos);
                        break;
                case 180: g2d.drawString("9", xPos,yPos);
                        break;
                case 270: g2d.drawString("6",xPos,yPos);
                        break;      
            }

            if(i%30==0){
                g2d.drawLine(xBegin,yBegin,xEnd,yEnd);
            }

        }


        g2d.setColor(Color.BLACK);
        g2d.setStroke(bstroke3);
        g2d.drawLine(X, Y, xHour,yHour);    // 画时针
        g2d.drawLine(X, Y, xHour1,yHour1);  
        g2d.setColor(Color.BLUE);
        g2d.setStroke(bstroke2);
        g2d.drawLine(X, Y, xMinute,yMinute);    // 画分针
        g2d.drawLine(X, Y, xMinute1,yMinute1);
        g2d.setColor(Color.RED);
        g2d.setStroke(bstroke);
        g2d.drawLine(X, Y, xSecond,ySecond);    // 画秒针
        g2d.drawLine(X, Y, xSecond1,ySecond1);
        //表盘中心点1
        g2d.drawOval(317,237,6,6); 
        g2d.fillOval(317,237,6,6);
        //表盘中心点2
        g2d.setColor(Color.BLACK);
        g2d.drawOval(319,238,4,4); 
        g2d.fillOval(319,238,4,4);
        //表盘中心圆环
        g2d.setColor(Color.ORANGE);
        g2d.drawOval(300,220,40,40); 
        g2d.setColor(Color.black);
        g2d.drawString("15010140079",290,376); 

        GregorianCalendar gre=new GregorianCalendar(); 
        SimpleDateFormat dateforamt1=new SimpleDateFormat("yyyy年MM月dd日E");
        //SimpleDateFormat dateforamt2=new SimpleDateFormat("H时m分s秒");
        g2d.setColor(Color.black);
        g2d.setFont(new Font("SAN_SERIF",Font.BOLD,20)); 
        g2d.drawString(dateforamt1.format(gre.getTime()),250,50);

        g2d.drawString(hour+"时"+minute+"分"+second+"秒",260,430);
        //时区判断
        if(currentState>12){
            currentState=-11;
        }
        else if(currentState<-11){
            currentState=12;
        }
        if(currentState<=12&&currentState>=1)
            zone="东"+currentState+"区";
        else
            zone="西"+(1-currentState)+"区";
        g2d.drawString(zone,170,50); 

    }

    class Task extends TimerTask {  
        public void run() {  
            calendar = new GregorianCalendar();  
            hourTemp=currentState>0?(currentState-8):(currentState-1);
            hour = calendar.get(Calendar.HOUR)+hourTemp;  
            minute = calendar.get(Calendar.MINUTE);  
            second = calendar.get(Calendar.SECOND); 

            a_sec = second * 2 * Math.PI / 60;
            a_min = minute * 2 * Math.PI / 60 + a_sec / 60;
            a_hour = hour * 2 * Math.PI / 12 + a_min / 12;
            // 计算时、分、秒针的末端位置
            xSecond=320+(int)(110*Math.sin(a_sec));
            ySecond=240-(int)(110*Math.cos(a_sec));
            xMinute=320+(int)(90 *Math.sin(a_min));
            yMinute=240-(int)(90 *Math.cos(a_min));
            xHour=  320+(int)(70 *Math.sin(a_hour));
            yHour=  240-(int)(70 *Math.cos(a_hour));
            xSecond1=320-(int)(22*Math.sin(a_sec));
            ySecond1=240+(int)(22*Math.cos(a_sec));
            xMinute1=320-(int)(15*Math.sin(a_min));
            yMinute1=240+(int)(15*Math.cos(a_min));
            xHour1  =320-(int)(5 *Math.sin(a_hour));
            yHour1  =240+(int)(5 *Math.cos(a_hour));

            repaint();  
        }  
    }  
}


//
//Clock.java
import javax.swing.*;

public class Clock{ 
    public static void main(String[] args) {
         JFrame frame=new JFrame("Clock");    //创建图文框
         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         frame.getContentPane().add(new ClockPanel()); //添加面板
         frame.setVisible(true);
         frame.setSize(640,480);         
    }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: java实现时钟表盘

本文链接: https://www.lsjlt.com/news/167315.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • java实现时钟表盘
    本文实例为大家分享了java实现时钟表盘的具体代码,供大家参考,具体内容如下 设计并实现一个模拟时钟功能的应用程序。程序中应显示时针、分针和秒针,并同时以数字形式显示当前时间。 实现...
    99+
    2024-04-02
  • C#GDI+实现时钟表盘
    本文实例为大家分享了C# GDI+实现时钟表盘的具体代码,供大家参考,具体内容如下 一、设计如下图界面 按键“打开时钟”按下后会出现表盘,按键“退...
    99+
    2024-04-02
  • C#如何实现时钟表盘
    本篇内容介绍了“C#如何实现时钟表盘”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、设计如下图界面按键“打开时钟”按下后会出现表盘,按键“...
    99+
    2023-07-02
  • JavaScript实现简单钟表时钟
    本文实例为大家分享了JavaScript实现简单钟表时钟的具体代码,供大家参考,具体内容如下 效果图: 主要思想: 1.先画一个圆表盘。 2.再用js循环画刻度(每一个刻度都是li...
    99+
    2024-04-02
  • js实现简单圆盘时钟
    本文实例为大家分享了js实现简单圆盘时钟的具体代码,供大家参考,具体内容如下 预览图: 代码: css: <style> .disc { ...
    99+
    2024-04-02
  • 原生JS实现实时钟表
    分享一个用原生JS实现的实时钟表特效,效果如下(PS:实际指针是按360度走的,截图时只截了一部分)   上面的效果一共需要4张图片,分别是表盘、时针、分针、秒针,根据需要...
    99+
    2024-04-02
  • C语言实现实时钟表
    本文实例为大家分享了C语言实现实时钟表的具体代码,供大家参考,具体内容如下 一、最终效果展示 效果图如下: 二、绘制静态秒针 代码如下: #include<graphics...
    99+
    2024-04-02
  • java怎么实现时间时钟
    Java中可以使用`java.util.Date`类和`java.text.SimpleDateFormat`类来实现时间时钟。首先...
    99+
    2023-08-29
    java
  • java实现自定义时钟并实现走时功能
    本文实例为大家分享了java自定义时钟并实现走时功能的具体代码,供大家参考,具体内容如下 效果图: 很多人想要自己用代码实现一个简单的时钟,显示时间,下面是我用JAVA写的一个时钟...
    99+
    2024-04-02
  • java实现时钟代码怎么写
    以下是一个简单的Java代码示例,用于实现一个时钟:```javaimport java.time.LocalTime;import...
    99+
    2023-08-29
    java
  • golang 墙上时钟与单调时钟的实现
    目录墙上时钟与单调时钟墙上时钟单调时钟Time的结构Since的实现小结参考资料墙上时钟与单调时钟 墙上时钟 墙上时钟也称为墙上时间。大多是1970年1月1日(UTC)以来的秒数和毫...
    99+
    2024-04-02
  • python 使用turtle实现实时钟表并生成exe
    源代码 python引入两个内置库turtle和datetime即可制作一个实时钟表,代码如下: # 用turtle画时钟 # 以自定义shape的方式实现 import turt...
    99+
    2024-04-02
  • JavaScript实现钟表案例
    本文实例为大家分享了JavaScript实现钟表效果的具体代码,供大家参考,具体内容如下 <!DOCTYPE html> <html lang="en">  ...
    99+
    2024-04-02
  • Qt实现电子时钟
    本文实例为大家分享了Qt实现电子时钟的具体代码,供大家参考,具体内容如下 进一步认识Qt中的属性,我们现在再做一个小练习,去实现一个简易版电子时钟的效果。 效果展示: 新建项目: ...
    99+
    2024-04-02
  • JavaScript实现时钟功能
    本文实例为大家分享了JavaScript实现时钟功能的具体代码,供大家参考,具体内容如下 1、HTML和CSS部分 1.1 HTML部分 1.1.1先放在一个容器中clock,存放 ...
    99+
    2024-04-02
  • Java中怎么实现一个数字时钟
    这期内容当中小编将会给大家带来有关Java中怎么实现一个数字时钟,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。代码如下:package me.socketthread;import j...
    99+
    2023-05-31
    java
  • pygame实现时钟效果
    用pygame做一个时钟,供大家参考,具体内容如下 刚刚学习pygame,由于基础实在太差,每个例子都要反复写逐句研究才能基本弄懂,这次做一个简单的有时针、分针、秒针,能正确行走的表...
    99+
    2024-04-02
  • QT5实现电子时钟
    本文实例为大家分享了QT5实现电子时钟的具体代码,供大家参考,具体内容如下 一、电子时钟的显示 效果如下: 电子时钟显示 二、新建工程 Widgets Application项目名...
    99+
    2024-04-02
  • JavaScript实现时钟特效
    本文实例为大家分享了JavaScript实现时钟特效的具体代码,供大家参考,具体内容如下 简单时间实现: <!DOCTYPE html> <html> <...
    99+
    2024-04-02
  • java如何实现自定义时钟并走时功能
    本文小编为大家详细介绍“java如何实现自定义时钟并走时功能”,内容详细,步骤清晰,细节处理妥当,希望这篇“java如何实现自定义时钟并走时功能”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。效果图:很多人想要自己...
    99+
    2023-07-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作