Java GUI绘制时钟

这篇博客是一个Java GUI组件的实践教程,通过创建一个时钟Demo来学习GUI设计和组件特性。作者强调代码可能不最优,重点在于理解设计思路。时钟的绘图基于JFrame和JPanel,自定义面板重写了paintComponent()方法。为了更新时钟显示,使用了repaint()方法,并利用三角函数确定指针位置。由于秒针影响较小,计算时针和分针角度时被忽略。博客内容包括时钟类的设计和时间文本的显示。
摘要由CSDN通过智能技术生成

Java GUI组件练习用Demo,主要是为了学习GUI的设计思路、组件的特性。这里的代码并不是最优雅的解决方案,千万别纠结这个……

 

要点:

  1. 绘图的框架应该继承自JFrame,具体组件继承自JPanel。
  2. 继承自JPanel的类覆写父类(JComponent)的paintComponent()方法,注意不是Container的paintComponents()!
  3. 这些都是不能重用的组件,所以要刷新则调用repaint(),此处在每次调用setter方法的时候进行调用。
  4. 通过时分秒计算时针、分针、秒针的位置需要用三角函数的知识。 
  5. 在计算时针和分针角度时,秒数对其影响太小(为second/3600),故此处为方便忽略不算。

 

效果图:黄线只是为了调整时钟数字摆放的位置,展示的代码中已经删去。

 

用于显示GUI的类,继承了JFrame,引用了两个继承自JPanel的类(分别用作绘画时钟和显示具体时间)。

package thinkwise.gui.graphics.practice;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.Timer;

public class DisplayClock extends JFrame {
	private StillClock clock = new StillClock();

	public DisplayClock() {
		
		final MessagePanel p = new MessagePanel(clock.getHour() + ":" + clock.getMinute() + ":" + c
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值