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);
}
}
}
}
}
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 {
}