java 日历

package Rong;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.RenderingHints;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class CalendarFrame extends JFrame {

  private static final long serialVersionUID = 1L;
  final long msInOneDay = 24 * 60 * 60 * 1000;//一天的毫秒数
  CalendarPanel pnl;

  public CalendarFrame() {
  this.init();
  this.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);//关闭方式
  this.setSize(120,160);
  this.setResizable(true);//不可改变大小
  this.setVisible(true);//设置可见
  }

  private void init() {
  this.pnl = new CalendarPanel();
  //绘制本月的日历
  this.pnl.setDate(new Date(new Date().getTime()));
  //绘制上个月的日历
  //this.pnl.setDate(new Date(new Date().getTime()-(long)30*this.msInOneDay));
  this.setContentPane(this.pnl);
  }

  public static void main(String[] args) {
  new CalendarFrame();
  }

  class CalendarPanel extends JPanel {
  private static final long serialVersionUID = 1L;
  Image imgBack, imgDay, imgToday;
  SimpleDateFormat year = new SimpleDateFormat("yyyy");//年
  SimpleDateFormat month = new SimpleDateFormat("MMMM");//月
  SimpleDateFormat day = new SimpleDateFormat("d");//日
  Date date = new Date();
  public CalendarPanel() {
    this.imgBack = new ImageIcon("11.png").getImage();
    this.imgDay = new ImageIcon("212.png").getImage();
    this.imgToday = new ImageIcon("33.png").getImage();
    this.setPreferredSize(new Dimension(this.imgBack.getWidth(null),
        this.imgBack.getHeight(null)));
  }
              //允许调用时指定将哪个日期当作默认日期
  public void setDate(Date date) {
    this.date = date;
  }
 
  public void paintComponent(Graphics g) {
    ((Graphics2D) g).setRenderingHint(RenderingHints.KEY_ANTIALIASING,
        RenderingHints.VALUE_ANTIALIAS_ON);
    g.drawImage(this.imgBack, 0, 0, null);
    g.setColor(Color.black);
    g.setFont(new Font("SansSerif", Font.PLAIN, 18));
    g.drawString(month.format(this.date), 34, 40);
    g.setColor(Color.white);
    g.drawString(year.format(this.date), 220, 40);
    Calendar today = Calendar.getInstance();
    today.setTime(this.date);
    Calendar cal = Calendar.getInstance();
    cal.setTime(this.date);
    cal.set(Calendar.DATE, 1);
    cal.add(Calendar.DATE, -cal.get(Calendar.DAY_OF_WEEK) + 1);
    for (int week = 0; week < 6; week++) {
      for (int d = 0; d < 7; d++) {
        Image img = imgDay;
        if (cal.get(Calendar.MONTH) == today.get(Calendar.MONTH)) {
          if (cal.equals(today)) {
            img = imgToday;
            g.setColor(Color.white);
          } else {
            g.setColor(Color.gray);
          }
          if (d == 0) {
            g.setColor(Color.red);
          }
          g.drawImage(img, d * 32 + 38, week * 29 + 100, null);
          g.drawString(day.format(cal.getTime()),
              d * 32 + 38 + 4, week * 29 + 100 + 20);
        }
        cal.add(Calendar.DATE, 1);
      }
    }
  }
  }
} java <wbr>日历

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值