写一个不会动的时钟
来源:互联网 发布:手机虚拟美女软件 编辑:程序博客网 时间:2024/04/28 03:58
package thinking;import java.awt.*;import javax.swing.*;import java.util.*;public class My extends JFrame{public My(){StillClock clock = new StillClock();MessagePanel messagePanel = new MessagePanel("" + clock.getHour() + ":" + clock.getMinute() + ":" + clock.getSecond());messagePanel.setCenter(true);messagePanel.setForeground(Color.blue);messagePanel.setFont(new Font("Courier",Font.BOLD,16));setLayout(new GridLayout(0,1,5,5));add(messagePanel);add(clock);}public static void main(String[] args){My frame = new My();frame.setTitle("DisplayClock");frame.setSize(500,500);frame.setLocationRelativeTo(null);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);}}class MessagePanel extends JPanel{private String message = "welcome to Java!";private boolean centered;private int xCoodinate = 20;private int yCoodinate = 20;public MessagePanel(){}public MessagePanel(String message){this.message = message;}public String getMessage(){return message;}public void setMessage(String message){this.message = message;repaint();}public boolean isCenter(){return centered;}public void setCenter(boolean centered){this.centered = centered;}protected void paintComponent(Graphics g){super.paintComponent(g);if(centered){FontMetrics fm = g.getFontMetrics();int stringWidth = fm.stringWidth(message);int stringAscent = fm.getAscent();xCoodinate = getWidth()/2 - stringWidth/2;yCoodinate = getHeight()/2 - stringAscent/2;}g.drawString(message, xCoodinate, yCoodinate);}}class StillClock extends JPanel{private int hour;private int minute;private int second;public StillClock(){setCurrentTime();}public StillClock(int hour , int minute , int second){this.hour = hour;this.minute = minute;this.second = second;}public int getHour(){return hour;}public void setHour(int hour){this.hour = hour;repaint();}public int getMinute(){return minute;}public void setMinute(int minute){this.minute = minute;repaint();}public int getSecond(){return second;}public void setSecond(int second){this.second = second;repaint();}protected void paintComponent(Graphics g){super.paintComponent(g);int clockRadius = (int)(Math.min(getWidth(), getHeight())*0.8*0.5);int xCenter = getWidth()/2;int yCenter = getHeight()/2;g.setColor(Color.BLACK);g.drawOval(xCenter - clockRadius , yCenter - clockRadius , 2*clockRadius , 2*clockRadius); g.drawString("12", xCenter - 5 , yCenter - clockRadius + 12);g.drawString("9", xCenter - clockRadius + 3 , yCenter + 5);g.drawString("3", xCenter + clockRadius - 10 , yCenter + 3);g.drawString("6", xCenter - 3 , yCenter + clockRadius - 3);int sLength = (int)(clockRadius * 0.8);int xSecond = (int)(xCenter + sLength * Math.sin(second * (2 * Math.PI/60)));int ySecond = (int)(yCenter - sLength * Math.cos(second * (2 * Math.PI/60)));g.setColor(Color.RED);g.drawLine(xCenter,yCenter,xSecond,ySecond);int mLength = (int)(clockRadius * 0.65);int xMinute = (int)(xCenter + mLength * Math.sin(minute * (2 * Math.PI/60)));int yMinute = (int)(yCenter - mLength * Math.cos(minute * (2 * Math.PI/60)));g.setColor(Color.BLUE);g.drawLine(xCenter, yCenter, xMinute, yMinute);int hLength = (int)(clockRadius * 0.5);int xHour = (int)(xCenter + hLength * Math.sin(hour * (2 * Math.PI/60)));int yHour = (int)(yCenter - hLength * Math.cos(hour * (2 * Math.PI/60)));g.setColor(Color.BLACK);g.drawLine(xCenter, yCenter, xHour, yHour);}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);}public Dimension getPreferredSize(){return new Dimension(200,200);}}
0 0
- 写一个不会动的时钟
- 使用HTML5的canvas做一个会动的时钟
- 使用HTML5的canvas做一个会动的时钟
- 使用HTML5的canvas做一个会动的时钟
- 用html5的canvas画一个可以动的时钟
- 使用canvas画一个可以动的时钟
- 怎么写一个时钟闹铃的源程序?
- 我写的一个时钟程序
- 一个VC写的模拟时钟
- javacript写的一个数字时钟
- 利用Acllib写的一个桌面时钟
- C语言写的一个电子时钟
- Android的Scroller不会动
- 写一个最短的不会重复的随机数
- 如何高效率的写一个不会重复出现的随机数
- 不会写的sql
- 自己写的一个Ajax连动下拉框组
- Java写一个可以跟随鼠标动的眼睛
- 【CodeForces】759C Nikita and stack
- Leetcode 403 - Frog Jump(dp or bfs)
- 时序分析之BCWC、OCV、AOCV模式
- 初识Nginx(三):反向代理和负载均衡
- 签offer VS 签三方
- 写一个不会动的时钟
- Ubuntu16.04下使用wine安装软件时汉字显示为方块的解决办法
- PHP 精度计算引发的灾难性Bug
- 写一个通用的事件监听函数
- Python 简单介绍
- 【BZOJ 1185】[HNOI2007]最小矩形覆盖 旋转卡壳
- CSS3动画——transition(过渡)
- 客户端跳转 和 服务器端跳转 页面之间的数据传递
- Saving HDU