JWindow日历 : 日历 « Swing组件 « Java

En
Java
1. 图形用户界面
2. 三维图形动画
3. 高级图形
4. 蚂蚁编译
5. Apache类库
6. 统计图
7. 
8. 集合数据结构
9. 数据类型
10. 数据库JDBC
11. 设计模式
12. 开发相关类
13. EJB3
14. 电子邮件
15. 事件
16. 文件输入输出
17. 游戏
18. 泛型
19. GWT
20. Hibernate
21. 本地化
22. J2EE平台
23. 基于J2ME
24. JDK-6
25. JNDI的LDAP
26. JPA
27. JSP技术
28. JSTL
29. 语言基础知识
30. 网络协议
31. PDF格式RTF格式
32. 映射
33. 常规表达式
34. 脚本
35. 安全
36. Servlets
37. Spring
38. Swing组件
39. 图形用户界面
40. SWT-JFace-Eclipse
41. 线程
42. 应用程序
43. Velocity
44. Web服务SOA
45. 可扩展标记语言
Java 教程
Java » Swing组件 » 日历屏幕截图 
JWindow日历
 
/*
Swing Hacks Tips and Tools for Killer GUIs
By Joshua Marinacci, Chris Adamson
First Edition June 2005  
Series: Hacks
ISBN: 0-596-00907-0
Pages: 542
website: http://www.oreilly.com/catalog/swinghks/
*/

import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Point;
import java.awt.RenderingHints;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import javax.swing.ImageIcon;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class CalendarHack extends JPanel {
  protected Image background = new ImageIcon("calendar.png").getImage();
  protected Image highlight = new ImageIcon("highlight.png").getImage();
  protected Image day_img = new ImageIcon("day.png").getImage();

  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() {
    this.setPreferredSize(new Dimension(300280));
  }

  public void paintComponent(Graphics g) {
    ((Graphics2Dg).setRenderingHint(RenderingHints.KEY_ANTIALIASING,
        RenderingHints.VALUE_ANTIALIAS_ON);
    g.drawImage(background, 00null);
    g.setColor(Color.black);
    g.setFont(new Font("SansSerif", Font.PLAIN, 18));
    g.drawString(month.format(date)3436);
    g.setColor(Color.white);
    g.drawString(year.format(date)23536);

    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_WEEK1);
    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 81null);
          g.drawString(day.format(cal.getTime()), d * 30 46 4, week * 29 81 20);
        }
        cal.add(Calendar.DATE, +1);
      }
    }
  }

  public static void main(String[] args) {
    JFrame frame = new JFrame();
    CalendarHack ch = new CalendarHack();
    ch.setDate(new Date());
    frame.getContentPane().add(ch);
    frame.setUndecorated(true);

    MoveMouseListener mml = new MoveMouseListener(ch);
    ch.addMouseListener(mml);
    ch.addMouseMotionListener(mml);

    frame.pack();
    frame.setVisible(true);
  }
}

class MoveMouseListener implements MouseListener, MouseMotionListener {
  JComponent target;

  Point start_drag;

  Point start_loc;

  public MoveMouseListener(JComponent target) {
    this.target = target;
  }

  public static JFrame getFrame(Container target) {
    if (target instanceof JFrame) {
      return (JFrametarget;
    }
    return getFrame(target.getParent());
  }

  Point getScreenLocation(MouseEvent e) {
    Point cursor = e.getPoint();
    Point target_location = this.target.getLocationOnScreen();
    return new Point((int) (target_location.getX() + cursor.getX()),
        (int) (target_location.getY() + cursor.getY()));
  }

  public void mouseClicked(MouseEvent e) {
  }

  public void mouseEntered(MouseEvent e) {
  }

  public void mouseExited(MouseEvent e) {
  }

  public void mousePressed(MouseEvent e) {
    this.start_drag = this.getScreenLocation(e);
    this.start_loc = this.getFrame(this.target).getLocation();
  }

  public void mouseReleased(MouseEvent e) {
  }

  public void mouseDragged(MouseEvent e) {
    Point current = this.getScreenLocation(e);
    Point offset = new Point((intcurrent.getX() (intstart_drag.getX()(intcurrent.getY()
        (intstart_drag.getY());
    JFrame frame = this.getFrame(target);
    Point new_location = new Point((int) (this.start_loc.getX() + offset.getX()),
        (int) (this.start_loc.getY() + offset.getY()));
    frame.setLocation(new_location);
  }

  public void mouseMoved(MouseEvent e) {
  }
}

           
         
  
Related examples in the same category
1. Paint a calendar
2. toedter : Java的日历toedter : Java的日历
3. Java的日期选择器(组合)Java的日期选择器(组合)
4. Java日期选配Java日期选配
5. Java月份选配Java月份选配
6. java年份选配java年份选配
7. 图形界面日期选择器(选择)
8. 图形界面日期选择器(选配) :不同月份图形界面日期选择器(选配) :不同月份
9. Swing Date selector (Chooser): darg to choose multiple datesSwing Date selector (Chooser): darg to choose multiple dates
10. 图形界面日期选择器(选配) :切换选择图形界面日期选择器(选配) :切换选择
11. 图形界面日期选择器(选配) :突出图形界面日期选择器(选配) :突出
12. JPanel中显示一个月的日历组件JPanel中显示一个月的日历组件
13. 图形界面日期选择器(选配)的源代码
www.java2java.com | Contact Us
Copyright 2010 - 2030 Java Source and Support. All rights reserved.
All other trademarks are property of their respective owners.