- public class CalendarHack extends JPanel {
- protected Image background, highlight, day_img;
- protected SimpleDateFormat month = new SimpleDateFormat("MMMM");
- protected SimpleDateFormat year = new SimpleDateFormat("yyyy");
- protected SimpleDateFormat day = new SimpleDateFormat("d");
- protected Date date = new Date();
- public void setDate(Date date) {
- this.date = date;
- }
- public CalendarHack() {
- background = new ImageIcon("calendar.png").getImage();
- highlight = new ImageIcon("highlight.png").getImage();
- day_img = new ImageIcon("day.png").getImage();
- this.setPreferredSize(new Dimension(300,280));
- }
- public void paintComponent(Graphics g) {
- ((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);
- }
- }
- //该片段来自于http://www.codesnippet.cn/detail/150820135176.html
来源: http://www.codesnippet.cn/detail/150820135176.html