java GUI 时钟(继)timer练习

JFrame 框架


在这里插入代码片
import java.awt.*;
import java.awt.event.*;
import javax.swing.event.*;
import javax.swing.*;

class NewClass extends JFrame {
    
   Jpanell a1=new Jpanell();
    public NewClass()
    {add(a1);
  Timer a2=new Timer(1000,new TListener());
  a2.start();
            }
    class TListener implements ActionListener{
    public void actionPerformed(ActionEvent e){
    a1.setTiao();}}

    }

Jpanell类

import java.awt.*;
import java.util.Calendar;
import java.util.GregorianCalendar;
import javax.swing.*;

public class Jpanell extends JPanel {
    private int hour;
    private int minute;
    private int second;
    private  Calendar a=new GregorianCalendar();
    public Jpanell(){
    this.hour=a.get(Calendar.HOUR_OF_DAY);
    this.minute=a.get(Calendar.MINUTE);
    this.second=a.get(Calendar.SECOND);
    }
    public void setTiao(){
        a=new GregorianCalendar();
    this.hour=a.get(Calendar.HOUR_OF_DAY);
    this.minute=a.get(Calendar.MINUTE);
    this.second=a.get(Calendar.SECOND);
    repaint();
    }
    @Override
   protected void paintComponent(Graphics g){
       super.paintComponent(g);
       int w=getWidth()/2;
       int h=getHeight()/2;
       int zhi=Math.min(w, h);
       g.drawOval(w-zhi/2, h-zhi/2, zhi,zhi);
       int shi=(int)(zhi/4);
       int fen=(int)(zhi/2*0.6);
       int miao=(int)(zhi/2*0.8);
       g.drawString("12", w-5,h-zhi/2+10);
       g.drawString("6", w, h+zhi/2);
       g.drawString("9", w-zhi/2+1, h);
       g.drawString("3", w+zhi/2-6, h);
       g.drawLine(w, h,w+(int)(shi*Math.sin((hour+minute/60+second/3600)*2*Math.PI/12)), h-(int)(shi*Math.cos((hour+minute/60+second/3600)*2*Math.PI/12)));//时针
       g.drawLine(w, h, w+(int)(fen*Math.sin((minute+second/60)*2*Math.PI/60)), h-(int)(fen*Math.cos((minute+second/60)*2*Math.PI/60)));//分针
       g.drawLine(w, h, w+(int)(miao*Math.sin((second)*2*Math.PI/60)), h-(int)(miao*Math.cos((second)*2*Math.PI/60)));//秒针
   g.drawString(hour+":"+minute+":"+second+" ", w-30, h+zhi/2+20);
   }
    @Override
   public Dimension getPreferredSize(){
   return new Dimension(100,100);}
}

在这里插入代码片

主函数

  public static void main(String[] args) {
NewClass xue=new NewClass();
xue.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
xue.setVisible(true);
xue.setTitle("xue");
xue.setSize(500, 500);
xue.setLocation(xue.getWidth()-50, xue.getHeight()-350);
    }
在这里插入代码片
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

月屯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值