文谷首页 | 业界传真 | 网络技术 | 服务器 | 数据库 | 存储技术 | 系统安全 | 无线技术 | Cisco | .Net | Windows | Linux | Unix | Java
电子商务 | 网站工程 | 网页设计 | 平面设计 | 多媒体 | 编程语言 | Oracle | MSSQL | Photoshop | ASP | PHP | 实用技巧 | 进程查询 | 文谷论坛
Java频道
 资讯动态   考试认证   新手入门   核心技术   高级技术   J2EE   J2ME   XML   开源技术   其他技术
您现在的位置: IT文谷 >> 开发平台 >> Java >> 核心技术 >> SwingAwtApplet >> 文章正文
改写的基于SWING的日期选择控件改写的基于SWING的日期选择控件2006-7-19 20:54:54改写的基于SWING的日期选择控件2006-7-19 20:54:54改写的基于SWING的日期选择控件
改写的基于SWING的日期选择控件
改写的基于SWING的日期选择控件改写的基于SWING的日期选择控件2006-7-19 20:54:54改写的基于SWING的日期选择控件2006-7-19 20:54:54改写的基于SWING的日期选择控件
改写的基于SWING的日期选择控件改写的基于SWING的日期选择控件2006-7-19 20:54:54改写的基于SWING的日期选择控件2006-7-19 20:54:54改写的基于SWING的日期选择控件

  上次公司需要,搞了一个SWING的Aapplication的DEMO,重新弄了一般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

改写的基于SWING的日期选择控件改写的基于SWING的日期选择控件2006-7-19 20:54:54改写的基于SWING的日期选择控件2006-7-19 20:54:54改写的基于SWING的日期选择控件
  • 上一篇文章:

  • 下一篇文章:
  • 进入论坛讨论

    相关文章
    我的Thinking in Java学习笔记
    使用JBoss和Eclipse创建J2EE应用
    SpringFramework(9)
    NoTitle385
    向Web Service进军--Axis+Tomcat模拟一个银行存取款
    JAVA中的指针,引用及对象的clone
    JAVA中用动态代理类实现记忆功能(二)
    JAVA中用动态代理类实现记忆功能(一)
    DB Test
    基金系统的初步研究(1)
    SpringFramework(8)
    深入浅出Java clone技术(2)
    热门文章最新推荐

    版权与免责声明:
    ① 本网转载其他媒体稿件是为传播更多的信息,此类稿件不代表本网观点,版权归原作者所有,本网不承担此类稿件侵权行为的连带责任。
    ② 本站原创文章,转载时请注明出自文谷及作者姓名
    ③在本网BBS上发表言论者,文责自负。
    ④如您因版权等问题需要与本网联络,请在30日内联系 。
    改写的基于SWING的日期选择控件改写的基于SWING的日期选择控件2006-7-19 20:54:54改写的基于SWING的日期选择控件2006-7-19 20:54:54改写的基于SWING的日期选择控件
    改写的基于SWING的日期选择控件改写的基于SWING的日期选择控件2006-7-19 20:54:54改写的基于SWING的日期选择控件2006-7-19 20:54:54改写的基于SWING的日期选择控件

    全站热点
    最新推荐
    关于文谷 | 联系文谷 | 免责声明 | 文谷论坛
    Tel: 0577-65690019      E-mail: ichenjian@gmail.com    MSN:ichenjian@hotmail.com    QQ:2911194
    Copyright © 2004-2008 wengu.com 文谷 All Rights Reserved
    浙ICP备05000327号