((Graphics2D)g).setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
g.drawImage(background,0,0,null);
g.setColor(Color.black);
g.setFont(new Font("SansSerif",Font.PLAIN,18));
g.drawString(month.format(date),34,36);
g.setColor(Color.white);
g.drawString(year.format(date),235,36);
Calendar today = Calendar.getInstance();
today.setTime(date);
Calendar cal = Calendar.getInstance();
cal.setTime(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 = day_img;
Color col = Color.black;
// only draw if it's actually in this month
if(cal.get(Calendar.MONTH) == today.get(Calendar.MONTH)) {
if(cal.equals(today)) { img = highlight; col = Color.white; }
g.drawImage(img,d*30+46,week*29+81,null);
g.drawString(day.format(cal.getTime()),d*30+46+4,week*29+81+20);
}
cal.add(Calendar.DATE,+1);
}
}