国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

改寫的基于SWING的日期選擇控件

2019-11-18 11:57:04
字體:
供稿:網(wǎng)友

  上次公司需要,搞了一個(gè)SWING的Aapplication的DEMO,重新弄了一般SWING,可惜最后無疾而終,可悲.....
  
  最近離職,把以前的東西整理了一下,覺得多少有點(diǎn)用處,寫下算是悼念吧!
  
  這是其中日期選擇控件的代碼,改編自網(wǎng)上某個(gè)程序(記不得了),界面如下所示:
  
改寫的基于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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 大英县| 新巴尔虎右旗| 定结县| 大安市| 达州市| 富锦市| 凤城市| 赞皇县| 绥宁县| 桐城市| 开阳县| 罗城| 罗源县| 平顶山市| 和平县| 新干县| 阜宁县| 富源县| 肇州县| 永德县| 赣榆县| 行唐县| 宜黄县| 罗平县| 云林县| 乌兰浩特市| 海淀区| 云安县| 柘荣县| 洞口县| 三原县| 达日县| 安龙县| 新昌县| 图木舒克市| 健康| 莱阳市| 榆林市| 任丘市| 宁津县| 巧家县|