Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 422|回复: 0

[Java基础知识]万年历程序

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-10-1 09:57:09 | 显示全部楼层 |阅读模式
    1. 如下是运行图:
    2. [img]http://img.javaxxz.com/2014/10/1/095708984.gif[/img]

    3.                         
    复制代码
       
      
      
      
    1. /**
    2. * Clock.java
    3. * Summary 数字时间显示
    4. * Created on 2005-8-14
    5. * @author 高�
    6. * remark 如有改动请发一份代码给我,<br> *邮箱gkgklovelove@eyou.com
    7. */

    8. package Clock;
    9. import javax.swing.*;
    10. import java.awt.*;
    11. import java.awt.event.*;
    12. import java.text.*;
    13. import java.util.*;
    14. class Clock extends Canvas implements Runnable{
    15.         MainFrame mf;
    16.         Thread t;
    17.         String time;
    18.         Clock(MainFrame mf){
    19.         this.mf=mf;
    20.         setSize(400,40);
    21.         setBackground(Color.white);
    22.         t=new Thread(this);        //实例化线程
    23.         t.start();                        //调用线程       
    24.         }
    25.         public void run(){
    26.         while(true){
    27.         try{
    28.         t.sleep(1000);                //休眠1秒钟
    29.         }catch(InterruptedException e){
    30.         System.out.println("异常");
    31.         }
    32.         this.repaint(100);
    33.         }
    34.         }
    35.         public void paint(Graphics g){
    36.         Font f=new Font("宋体",Font.BOLD,16);
    37.           
    38.         SimpleDateFormat SDF=new SimpleDateFormat("yyyy"年"MM"月"dd"日"HH:mm:ss");//格式化时间显示类型
    39.         Calendar now=Calendar.getInstance();
    40.         time=SDF.format(now.getTime());                //得到当前日期和时间
    41.         g.setFont(f);
    42.         g.setColor(Color.orange);
    43.         g.drawString(time,100,25);
    44.         }
    45. }                     
    46.                      
    复制代码

      
    1. /**
    2. * MainFrame.java
    3. * Summary 万年历主类
    4. * Created on 2005-8-14
    5. * @author 高&#65533;
    6. * remark 如有改动请发一份代码给我,邮箱gkgklovelove@eyou.com
    7. */
    8. package Clock;
    9. import javax.swing.*;
    10. import java.awt.*;
    11. import java.awt.event.*;
    12. import java.text.*;
    13. import java.util.*;
    14. class MainFrame extends JFrame{
    15.         JPanel panel=new JPanel(new BorderLayout());
    16.         JPanel panel1=new JPanel();
    17.         JPanel panel2=new JPanel(new GridLayout(7,7));
    18.         JPanel panel3=new JPanel();
    19.         JLabel []label=new JLabel[49];
    20.         JLabel y_label=new JLabel("年份");
    21.         JLabel m_label=new JLabel("月份");
    22.         JComboBox com1=new JComboBox();
    23.         JComboBox com2=new JComboBox();
    24.         JButton button=new JButton("查看");
    25.         int re_year,re_month;
    26.         int x_size,y_size;
    27.         String year_num;
    28.         Calendar now=Calendar.getInstance();        //实例化Calendar
    29.         MainFrame(){
    30.                 super("万年历");
    31.                 setSize(300,350);
    32.                 x_size=(int)(Toolkit.getDefaultToolkit().getScreenSize().getWidth());
    33.                 y_size=(int)(Toolkit.getDefaultToolkit().getScreenSize().getHeight());
    34.                 setLocation((x_size-300)/2,(y_size-350)/2);
    35.                 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    36.                 panel1.add(y_label);
    37.                 panel1.add(com1);
    38.                 panel1.add(m_label);
    39.                 panel1.add(com2);
    40.                 panel1.add(button);
    41.                 for(int i=0;i< 49;i++){
    42.                         label[i]=new JLabel("",JLabel.CENTER);//将显示的字符设置为居中
    43.                         panel2.add(label[i]);
    44.                 }
    45.                 panel3.add(new Clock(this));
    46.                 panel.add(panel1,BorderLayout.NORTH);
    47.                 panel.add(panel2,BorderLayout.CENTER);
    48.                 panel.add(panel3,BorderLayout.SOUTH);
    49.                 panel.setBackground(Color.white);
    50.                 panel1.setBackground(Color.white);
    51.                 panel2.setBackground(Color.white);
    52.                 panel3.setBackground(Color.white);
    53.                 Init();
    54.                 button.addActionListener(new ActionListener(){
    55.                         public void actionPerformed(ActionEvent e){
    56.                                 int c_year,c_month,c_week;
    57.                                 c_year=Integer.parseInt(com1.getSelectedItem().toString());        //得到当前所选年份
    58.                                 c_month=Integer.parseInt(com2.getSelectedItem().toString())-1;
    59.                                 c_week=use(c_year,c_month);                //调用函数use,得到星期几
    60.                                 Resetday(c_week,c_year,c_month);                //调用函数Resetday
    61.                         }});
    62.                 setContentPane(panel);
    63.                 setVisible(true);
    64.                 setResizable(false);
    65.         }
    66.         public void Init(){
    67.         int year,month_num,first_day_num;
    68.         String log[]={"日","一","二","三","四","五","六"};
    69.         for(int i=0;i< 7;i++){
    70.         label[i].setText(log[i]);
    71.         }
    72.         for(int i=0;i< 49;i=i+7){
    73.                 label[i].setForeground(Color.red);        //将星期日的日期设置为红色
    74.         }
    75.         for(int i=6;i< 49;i=i+7){
    76.                 label[i].setForeground(Color.green);//将星期六的日期设置为绿色
    77.         }
    78.         for(int i=1;i< 10000;i++){
    79.                 com1.addItem(""+i);
    80.         }
    81.         for(int i=1;i< 13;i++){
    82.                 com2.addItem(""+i);
    83.         }
    84.         month_num=(int)(now.get(Calendar.MONTH));        //得到当前时间的月份
    85.         year=(int)(now.get(Calendar.YEAR));                        //得到当前时间的年份
    86.         com1.setSelectedIndex(year-1);                                //设置下拉列表显示为当前年
    87.         com2.setSelectedIndex(month_num);                        //设置下拉列表显示为当前月
    88.         first_day_num=use(year,month_num);
    89.         Resetday(first_day_num,year,month_num);
    90.         }
    91.         public int use(int reyear,int remonth){
    92.                 int week_num;
    93.                 now.set(reyear,remonth,1);                //设置时间为所要查询的年月的第一天
    94.                 week_num= (int)(now.get(Calendar.DAY_OF_WEEK));//得到第一天的星期
    95.                 return week_num;
    96.         }
    97.         public void Resetday(int week_log,int year_log,int month_log){
    98.                 int month_score_log;        //判断是否是闰年的标记
    99.                 int month_day_score;        //存储月份的天数
    100.                 int count;
    101.                 month_score_log=0;
    102.                 month_day_score=0;
    103.                 count=1;
    104.                 if(year_log%4==0&&year_log%100!=0||year_log%400==0){//判断是否为闰年
    105.                         month_score_log=1;
    106.                 }
    107.         month_log=month_log+1;        //将传来的月份数加1
    108.         switch(month_log){
    109.                 case 1:
    110.                 case 3:
    111.                 case 5:
    112.                 case 7:
    113.                 case 8:
    114.                 case 10:
    115.                 case 12:
    116.                 month_day_score=31;
    117.                 break;
    118.                 case 4:
    119.                 case 6:
    120.                 case 9:
    121.                 case 11:
    122.                 month_day_score=30;
    123.                 break;
    124.                 case 2:
    125.                 if(month_score_log==1){
    126.                 month_day_score=29;       
    127.                 }
    128.                 else{
    129.                 month_day_score=28;
    130.                 }
    131.                 break;
    132.                 }
    133.                 for(int i=7;i< 49;i++){                //初始化标签
    134.                         label[i].setText("");
    135.                 }
    136.                 week_log=week_log+6;                //将星期数加6,使显示正确
    137.                 month_day_score=month_day_score+week_log;
    138.                 for(int i=week_log;i< month_day_score;i++,count++){
    139.                         label[i].setText(count+"");
    140.                 }
    141.         }
    142.         public static void main(String [] args){
    143.                 JFrame.setDefaultLookAndFeelDecorated(true);
    144.                 MainFrame start=new MainFrame();
    145.         }       
    146. }
    复制代码


      
      
       
       

         
       

         
       
      
      
      

      










    源码下载:http://file.javaxxz.com/2014/10/1/095709094.zip
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-3 12:47 , Processed in 0.482322 second(s), 34 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表