网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.Java & XML基础学习笔记 SAX篇.
.了解Servlet.
.哪里去找支持中文的字体.
.复合赋值运算符.
.如何使用线程.
.怎 样 在 APPLET 中 发 EMAIL.
.将数据库操作封装到Javabean.
.Java Web 框架的“甜点”.
.你能过关吗?J2EE面试题集锦(附答.
.Jacada发布EJB封装器.
.exp 方法.
.java 参数是如何传递的.
.Hibernate 入门之轻松上手.
.java版的MD5.
.VRML与JAVA在网络课件中交互运用.
.JAVA - IO包的学习引导文章(摘抄.
.如何用JDO开发数据库应用(11).
.JBoss技术支持文档(一).
.Java中的functor实现.
.用Eclipse进行可视化Java界面设计.

改写的基于SWING的日期选择控件

发表日期:2008-1-5



  上次公司需要,搞了一个SWING的Aapplication的DEMO,重新弄了一般SWING,可惜最后无疾而终,可悲.....
  
  最近离职,把以前的东西整理了一下,觉得多少有点用处,写下算是悼念吧!
  
  这是其中日期选择控件的代码,改编自网上某个程序(记不得了),界面如下所示:
  
改写的基于SWING的日期选择控件


  源代码:
  
  //DatePicker.Java
  
  package com.kxsoft.component;
  
  import java.awt.*;
  
  import java.awt.event.*;
  
  import java.util.GregorianCalendar;
  
  import java.util.Date;
  
  import java.util.Calendar;
  
  import java.text.DateFormat;
  
  import java.text.FieldPosition;
  
  import javax.swing.*;
  
  import javax.swing.plaf.BorderUIResource;
  
  public final class DatePicker extends JPanel {
  
  private static final long serialVersionUID = 1L;
  
  private static final int startX = 10;
  
  private static final int startY = 60;
  
  private static final Font smallFont = new Font("Dialog", Font.PLAIN, 10);
  
  private static final Font largeFont = new Font("Dialog", Font.PLAIN, 12);
  
  private static final Insets insets = new Insets(2, 2, 2, 2);
  
  private static final Color highlight = new Color(255, 255, 204);
  
  private static final Color white = new Color(255, 255, 255);
  
  private static final Color gray = new Color(204, 204, 204);
  
  private Component selectedDay = null;
  
  private GregorianCalendar selectedDate = null;
  
  private GregorianCalendar originalDate = null;
  
  private boolean hideOnSelect = true;
  
  private final JButton backButton = new JButton();
  
  private final JLabel monthAndYear = new JLabel();
  
  private final JButton forwardButton = new JButton();
  
  private final JLabel[] dayHeadings = new JLabel[]{
  new JLabel("日"),
  new JLabel("一"),
  new JLabel("二"),
  new JLabel("三"),
  new JLabel("四"),
  new JLabel("五"),
  new JLabel("六")};
  
  private final JLabel[][] daysInMonth = new JLabel[][]{
  {new JLabel(),
  new JLabel(),
  new JLabel(),
  new JLabel(),
  new JLabel(),
  new JLabel(),
  new JLabel()},
  {new JLabel(),
  new JLabel(),
  new JLabel(),
  new JLabel(),
  new JLabel(),
  new JLabel(),
  new JLabel()},
  {new JLabel(),
  new JLabel(),
  new JLabel(),
  new JLabel(),
  new JLabel(),
  new JLabel(),
  new JLabel()},
  {new JLabel(),
  new JLabel(),
  new JLabel(),
  new JLabel(),
  new JLabel(),
  new JLabel(),
  new JLabel()},
  {new JLabel(),
  new JLabel(),
  new JLabel(),
  new JLabel(),
  new JLabel(),
  new JLabel(),
  new JLabel()},
  {new JLabel(),
  new JLabel(),
  new JLabel(),
  new JLabel(),
  new JLabel(),
  new JLabel(),
  new JLabel()}
  };
  
  private final JButton todayButton = new JButton();
  
  private final JButton cancelButton = new JButton();
  
  public DatePicker() {
  super();
  selectedDate = getToday();
  init();
  }
  
  public DatePicker(final Date initialDate) {
  super();
  if (null == initialDate)
  selectedDate = getToday();
  else
  (selectedDate = new GregorianCalendar()).setTime(initialDate);
  originalDate = new GregorianCalendar(
  selectedDate.get(Calendar.YEAR),
  selectedDate.get(Calendar.MONTH),
  selectedDate.get(Calendar.DATE));
  init();
  }
  
  public boolean isHideOnSelect() {
  return hideOnSelect;
  }
  
  public void setHideOnSelect(final boolean hideOnSelect) {
  if (this.hideOnSelect != hideOnSelect) {
  this.hideOnSelect = hideOnSelect;
  initButtons(false);
  }
  }
  
  public Date getDate() {
  if (null != selectedDate)
  return selectedDate.getTime();
  return null;
  }
  
  private void init() {
  setLayout(new AbsoluteLayout());
  this.setMinimumSize(new Dimension(161, 226));
  this.setMaximumSize(getMinimumSize());
  this.setPreferredSize(getMinimumSize());
  this.setBorder(new BorderUIResource.EtchedBorderUIResource());
  
  backButton.setFont(smallFont);
  backButton.setText("<");
  backButton.setMargin(insets);
  backButton.setDefaultCapable(false);
  backButton.addActionListener(new ActionListener() {
  public void actionPerformed(final ActionEvent evt) {
  onBackClicked(evt);
  }
  });
  add(backButton, new AbsoluteConstraints(10, 10, 20, 20));
  
  monthAndYear.setFont(largeFont);
  monthAndYear.setHorizontalAlignment(JTextField.CENTER);
  monthAndYear.setText(formatDateText(selectedDate.getTime()));
  add(monthAndYear, new AbsoluteConstraints(30, 10, 100, 20));
  
  forwardButton.setFont(smallFont);
  forwardButton.setText(">");
  forwardButton.setMargin(insets);
  forwardButton.setDefaultCapable(false);
  forwardButton.addActionListener(new ActionListener() {
  public void actionPerformed(final ActionEvent evt) {
  onForwardClicked(evt);
  }
  });
  add(forwardButton, new AbsoluteConstraints(130, 10, 20, 20));
  
  int x = startX;
  for (int ii = 0; ii < dayHeadings.length; ii++) {
  dayHeadings[ii].setOpaque(true);
  dayHeadings[ii].setBackground(Color.LIGHT_GRAY);
  dayHeadings[ii].setForeground(Color.WHITE);
  dayHeadings[ii].setHorizontalAlignment(JLabel.CENTER);
  add(dayHeadings[ii], new AbsoluteConstraints(x, 40, 21, 21));
  x += 20;
  }
  
  x = startX;
  int y = startY;
  for (int ii = 0; ii < daysInMonth.length; ii++) {
  for (int jj = 0; jj < daysInMonth[ii].length; jj++) {
  daysInMonth[ii][jj].setOpaque(true);
  daysInMonth[ii][jj].setBackground(white);
  daysInMonth[ii][jj].setFont(smallFont);
  daysInMonth[ii][jj].setHorizontalAlignment(JLabel.CENTER);
  daysInMonth[ii][jj].setText("");
  daysInMonth[ii][jj].addMouseListener(new MouseAdapter() {
  public void mouseClicked(final MouseEvent evt) {
  onDayClicked(evt);
  }
  });
  add(daysInMonth[ii][jj], new AbsoluteConstraints(x, y, 21, 21));
  x += 20;
  }
  x = startX;
  y += 20;
  }
  
  initButtons(true);
  
  calculateCalendar();
  }
  
  private void initButtons(final boolean firstTime) {
  if (firstTime) {
  final Dimension buttonSize = new Dimension(68, 24);
  todayButton.setText("今天");
  todayButton.setMargin(insets);
  todayButton.setMaximumSize(buttonSize);
  todayButton.setMinimumSize(buttonSize);
  todayButton.setPreferredSize(buttonSize);
  todayButton.setDefaultCapable(true);
  todayButton.setSelected(true);
  todayButton.addActionListener(new ActionListener() {
  public void actionPerformed(final ActionEvent evt) {
  onToday(evt);
  }
  });
  
  cancelButton.setText("取消");
  cancelButton.setMargin(insets);
  cancelButton.setMaximumSize(buttonSize);
  cancelButton.setMinimumSize(buttonSize);
  cancelButton.setPreferredSize(buttonSize);
  cancelButton.addActionListener(new ActionListener() {
  public void actionPerformed(final ActionEvent evt) {
  onCancel(evt);
  }
  });
  } else {
  this.remove(todayButton);
  this.remove(cancelButton);
  }
  
  if (hideOnSelect) {
  add(todayButton, new Absolut
上一篇:java.applet.Applet的网络功能(二) 人气:543
下一篇:小技巧:Java Swing中使用双击事件 人气:672
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐