java日期控件--4--MyCalendarPanel.java
来源:互联网 发布:rule deny source mac 编辑:程序博客网 时间:2024/05/16 19:21
MyCalendarPanel.java
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.SystemColor;
import java.awt.event.*;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Locale;
import java.util.Date;
import java.util.StringTokenizer;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.JToggleButton;
import javax.swing.SwingConstants;
import javax.swing.UIManager;
import javax.swing.ImageIcon;
public class MyCalendarPanel extends JPanel {
private ImageIcon Icon1 = null;
private ImageIcon Icon2 = null;
private ImageIcon Icon3 = null;
private ImageIcon Icon4 = null;
//得到时间
public JTextField outText = new JTextField();
//动态表示年月日
private int year = 0;
private int month = 0;
private int day = 0;
//主面板
private JPanel Main = new JPanel();
//日面板
private JPanel jPanelDay = new JPanel();
//月面板
private JPanel jPanelMonth = new JPanel();
//年的输入位置
private JTextField Year = new JTextField();
//月的输入位置
private JTextField Month = new JTextField();
//减少月份
private JButton MonthDown = new JButton();
//增加月份
private JButton MonthUp = new JButton();
//返回选种日期
private JPanel jPanelButton = new JPanel();
//减少年份
private JButton YearDown = new JButton();
//增加年份
private JButton YearUp = new JButton();
//显示日期的位置
public JLabel Out = new JLabel();
//中国时区,以后可以从这里扩展可以设置时区的功能
private Locale l = Locale.CHINESE;
//主日历
private GregorianCalendar cal = new GregorianCalendar(l);
//星期面板
private JPanel weekPanel = new JPanel();
//天按钮组
private JToggleButton[] days = new JToggleButton[42];
//天面板
private JPanel Days = new JPanel();
//标示
private JLabel jLabel1 = new JLabel();
private JLabel jLabel2 = new JLabel();
private JLabel jLabel3 = new JLabel();
private JLabel jLabel4 = new JLabel();
private JLabel jLabel5 = new JLabel();
private JLabel jLabel6 = new JLabel();
private JLabel jLabel7 = new JLabel();
//当前选择的天数按钮
private JToggleButton cur = null;
//月份天数数组,用来取得当月有多少天
// 1 2 3 4 5 6 7 8 9 10 11 12
private int[] mm = ...{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
//空日期构造函数
public MyCalendarPanel() {
try ...{
jbInit();
} catch (Exception e) {
e.printStackTrace();
}
}
//带日期设置的构造函数
public MyCalendarPanel(int year, int month, int day) {
cal.set(year, month, day);
try {
jbInit();
} catch (Exception e) {
e.printStackTrace();
}
}
//带日历输入的构造函数
public MyCalendarPanel(GregorianCalendar calendar){
cal = calendar;
try{
jbInit();
} catch (Exception e) {
e.printStackTrace();
}
}
//带日期输入的构造函数
public MyCalendarPanel(Date date) {
cal.setTime(date);
try ...{
jbInit();
} catch (Exception e) ...{
e.printStackTrace();
}
}
//初始化组件
private void jbInit() throws Exception ...{
//初始化年、月、日
iniCalender();
this.setLayout(new BorderLayout());
this.setBorder(BorderFactory.createRaisedBevelBorder());
this.setMaximumSize(new Dimension(200, 200));
this.setMinimumSize(new Dimension(200, 200));
this.setPreferredSize(new Dimension(200, 200));
Main.setLayout(new BorderLayout());
Main.setBackground(SystemColor.info);
Main.setBorder(null);
Out.setBackground(Color.lightGray);
Out.setHorizontalAlignment(SwingConstants.CENTER);
Out.setMaximumSize(new Dimension(100, 19));
Out.setMinimumSize(new Dimension(100, 19));
Out.setPreferredSize(new Dimension(100, 19));
jLabel1.setForeground(Color.red);
jLabel1.setHorizontalAlignment(SwingConstants.CENTER);
jLabel1.setHorizontalTextPosition(SwingConstants.CENTER);
jLabel1.setText("日");
jLabel2.setForeground(Color.blue);
jLabel2.setHorizontalAlignment(SwingConstants.CENTER);
jLabel2.setHorizontalTextPosition(SwingConstants.CENTER);
jLabel2.setText("六");
jLabel3.setHorizontalAlignment(SwingConstants.CENTER);
jLabel3.setHorizontalTextPosition(SwingConstants.CENTER);
jLabel3.setText("五");
jLabel4.setHorizontalAlignment(SwingConstants.CENTER);
jLabel4.setHorizontalTextPosition(SwingConstants.CENTER);
jLabel4.setText("四");
jLabel5.setHorizontalAlignment(SwingConstants.CENTER);
jLabel5.setHorizontalTextPosition(SwingConstants.CENTER);
jLabel5.setText("三");
jLabel6.setBorder(null);
jLabel6.setHorizontalAlignment(SwingConstants.CENTER);
jLabel6.setHorizontalTextPosition(SwingConstants.CENTER);
jLabel6.setText("二");
jLabel7.setBackground(Color.lightGray);
jLabel7.setForeground(Color.black);
jLabel7.setBorder(null);
jLabel7.setHorizontalAlignment(SwingConstants.CENTER);
jLabel7.setHorizontalTextPosition(SwingConstants.CENTER);
jLabel7.setText("一");
weekPanel.setBackground(UIManager.getColor(
"InternalFrame.activeTitleGradient"));
weekPanel.setBorder(BorderFactory.createEtchedBorder());
weekPanel.setLayout(new GridLayout(1, 7));
weekPanel.add(jLabel1, null);
weekPanel.add(jLabel7, null);
weekPanel.add(jLabel6, null);
weekPanel.add(jLabel5, null);
weekPanel.add(jLabel4, null);
weekPanel.add(jLabel3, null);
weekPanel.add(jLabel2, null);
MonthUp.setAlignmentX((float) 0.0);
MonthUp.setActionMap(null);
jPanelMonth.setBackground(SystemColor.info);
jPanelMonth.setLayout(new BorderLayout());
jPanelMonth.setBorder(BorderFactory.createEtchedBorder());
Month.setBorder(null);
Month.setHorizontalAlignment(SwingConstants.CENTER);
Month.addMouseListener(new java.awt.event.MouseAdapter() ...{
public void mouseClicked(MouseEvent e) ...{
Month_mouseClicked(e);
}
});
Month.addKeyListener(new java.awt.event.KeyAdapter() ...{
public void keyPressed(KeyEvent e) ...{
Month_keyPressed(e);
}
});
MonthDown.setBorder(null);
Icon1 = ImageHelper.loadImage("ArrowLeft.gif");
MonthDown = new NoFocusButton(Icon1);
MonthDown.addActionListener(new java.awt.event.ActionListener() ...{
public void actionPerformed(ActionEvent e) ...{
MonthDown_actionPerformed(e);
}
});
MonthUp.setBorder(null);
Icon2 = ImageHelper.loadImage("ArrowRight.gif");
MonthUp = new NoFocusButton(Icon2);
MonthUp.addActionListener(new java.awt.event.ActionListener() ...{
public void actionPerformed(ActionEvent e) ...{
MonthUp_actionPerformed(e);
}
});
jPanelButton.setLayout(null);
jPanelButton.setBorder(null);
jPanelButton.addComponentListener(new java.awt.event.ComponentAdapter() ...{
public void componentResized(java.awt.event.ComponentEvent evt) ...{
jPanelButtonComponentResized(evt);
}
});
Year.setBorder(BorderFactory.createEtchedBorder());
Year.setMaximumSize(new Dimension(80, 25));
Year.setMinimumSize(new Dimension(80, 25));
Year.setPreferredSize(new Dimension(80, 25));
Year.setHorizontalAlignment(SwingConstants.CENTER);
Year.addMouseListener(new java.awt.event.MouseAdapter() ...{
public void mouseClicked(MouseEvent e) ...{
Year_mouseClicked(e);
}
});
Year.addKeyListener(new java.awt.event.KeyAdapter() ...{
public void keyPressed(KeyEvent e) ...{
Year_keyPressed(e);
}
});
YearDown.setBorder(null);
YearDown.setMaximumSize(new Dimension(16, 16));
YearDown.setMinimumSize(new Dimension(16, 16));
YearDown.setPreferredSize(new Dimension(16, 16));
YearDown.setSize(new Dimension(16, 16));
YearDown.setText("D");
YearDown.setToolTipText("Down");
YearDown.addActionListener(new java.awt.event.ActionListener() ...{
public void actionPerformed(ActionEvent e) ...{
YearDown_actionPerformed(e);
}
});
YearUp.setBorder(null);
YearUp.setMaximumSize(new Dimension(16, 16));
YearUp.setMinimumSize(new Dimension(16, 16));
YearUp.setPreferredSize(new Dimension(16, 16));
YearUp.setSize(new Dimension(16, 16));
YearUp.setText("U");
YearUp.setToolTipText("Up");
YearUp.addActionListener(new java.awt.event.ActionListener() ...{
public void actionPerformed(ActionEvent e) ...{
YearUp_actionPerformed(e);
}
});
jPanelDay.setLayout(new BorderLayout());
Days.setLayout(new GridLayout(6, 7));
Days.setBackground(SystemColor.info);
for (int i = 0; i < 42; i++) ...{
days[i] = new JToggleButton();
days[i].setBorder(null);
days[i].setFocusPainted(false);
days[i].setBackground(SystemColor.info);
days[i].setHorizontalAlignment(SwingConstants.CENTER);
days[i].setHorizontalTextPosition(SwingConstants.CENTER);
days[i].addActionListener(new java.awt.event.ActionListener() ...{
public void actionPerformed(ActionEvent e) ...{
day = Integer.parseInt(((JToggleButton) e.getSource()).
getText());
showDate();
showDays();
}
});
days[i].addMouseListener(new java.awt.event.MouseAdapter() ...{
public void mouseReleased(MouseEvent e) ...{
outText.setText(Out.getText());
}
});
Days.add(days[i]);
}
this.add(Main, BorderLayout.NORTH);
this.add(jPanelDay, BorderLayout.CENTER);
this.add(jPanelMonth, BorderLayout.SOUTH);
Main.add(Year, BorderLayout.CENTER);
Main.add(Out, BorderLayout.WEST);
Main.add(jPanelButton, BorderLayout.EAST);
jPanelButton.add(YearUp);
jPanelButton.add(YearDown);
jPanelDay.add(weekPanel, BorderLayout.NORTH);
jPanelDay.add(Days, BorderLayout.CENTER);
jPanelMonth.add(Month, BorderLayout.CENTER);
jPanelMonth.add(MonthDown, BorderLayout.WEST);
jPanelMonth.add(MonthUp, BorderLayout.EAST);
showMonth();
showYear();
showDate();
showDays();
}
//自定义重画年选择面板
void jPanelButtonComponentResized(java.awt.event.ComponentEvent evt) ...{
YearUp.setLocation(0, 0);
YearDown.setLocation(0, YearUp.getHeight());
jPanelButton.setSize(YearUp.getWidth(), YearUp.getHeight() * 2);
jPanelButton.setPreferredSize(new Dimension(YearUp.getWidth(),
YearUp.getHeight() * 2));
jPanelButton.updateUI();
}
//增加年份
void YearUp_actionPerformed(ActionEvent e) ...{
year++;
showYear();
showDate();
showDays();
}
//减少年份
void YearDown_actionPerformed(ActionEvent e) ...{
year--;
showYear();
showDate();
showDays();
}
//减少月份
void MonthDown_actionPerformed(ActionEvent e) ...{
month--;
if (month < 0) ...{
month = 11;
year--;
showYear();
}
showMonth();
showDate();
showDays();
}
//增加月份
void MonthUp_actionPerformed(ActionEvent e) ...{
month++;
if (month == 12) ...{
month = 0;
year++;
showYear();
}
showMonth();
showDate();
showDays();
}
//初始化年月日
void iniCalender() ...{
year = cal.get(Calendar.YEAR);
month = cal.get(Calendar.MONTH);
day = cal.get(Calendar.DAY_OF_MONTH);
}
//刷新月份
void showMonth() ...{
Month.setText(Integer.toString(month + 1) + "月");
}
//刷新年份
void showYear() ...{
Year.setText(Integer.toString(year) + "年");
}
//刷新日期
void showDate() ...{
Out.setText(Integer.toString(year) + "-" + Integer.toString(month + 1) +
"-" + Integer.toString(day));
}
//重画天数选择面板
void showDays() ...{
cal.set(year, month, 1);
int firstDayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
int n = mm[month];
if (cal.isLeapYear(year) && month == 1) ...{
n++;
}
int i = 0;
for (; i < firstDayOfWeek - 1; i++) ...{
days[i].setEnabled(false);
days[i].setSelected(false);
days[i].setText("");
}
int d = 1;
for (; d <= n; d++) ...{
days[i].setText(Integer.toString(d));
days[i].setEnabled(true);
if (d == day) ...{
days[i].setSelected(true);
} else ...{
days[i].setSelected(false); ;
}
i++;
}
for (; i < 42; i++) ...{
days[i].setEnabled(false);
days[i].setSelected(false);
days[i].setText("");
}
}
//单击年份面板选择整个年份字符串
void SelectionYear() ...{
Year.setSelectionStart(0);
Year.setSelectionEnd(Year.getText().length());
}
//单击月份面板选择整个月份字符串
void SelectionMonth() ...{
Month.setSelectionStart(0);
Month.setSelectionEnd(Month.getText().length());
}
//月份面板响应鼠标单击事件
void Month_mouseClicked(MouseEvent e) ...{
//SelectionMonth();
inputMonth();
}
//检验输入的月份
void inputMonth() ...{
String s;
if (Month.getText().endsWith("月")) ...{
s = Month.getText().substring(0, Month.getText().length() - 1);
} else ...{
s = Month.getText();
}
month = Integer.parseInt(s) - 1;
this.showMe();
}
//月份面板键盘敲击事件响应
void Month_keyPressed(KeyEvent e) ...{
if (e.getKeyChar() == 10) ...{
inputMonth();
}
}
//年份面板响应鼠标单击事件
void Year_mouseClicked(MouseEvent e) ...{
//SelectionYear();
inputYear();
}
//年份键盘敲击事件响应
void Year_keyPressed(KeyEvent e) ...{
//System.out.print(new Integer(e.getKeyChar()).byteValue());
if (e.getKeyChar() == 10) ...{
inputYear();
}
}
//检验输入的年份字符串
void inputYear() ...{
String s;
if (Year.getText().endsWith("年")) ...{
s = Year.getText().substring(0, Year.getText().length() - 1);
} else ...{
s = Year.getText();
}
year = Integer.parseInt(s);
this.showMe();
}
//以字符串形式返回日期,yyyy-mm-dd
public String getDate() ...{
return Out.getText();
}
//以字符串形式输入日期,yyyy-mm-dd
public void setDate(String date) ...{
if (date != null) ...{
StringTokenizer f = new StringTokenizer(date, "-");
if (f.hasMoreTokens()) ...{
year = Integer.parseInt(f.nextToken());
}
if (f.hasMoreTokens()) ...{
month = Integer.parseInt(f.nextToken());
}
if (f.hasMoreTokens()) ...{
day = Integer.parseInt(f.nextToken());
}
cal.set(year, month, day);
}
this.showMe();
}
//以日期对象形式输入日期
public void setTime(Date date) ...{
cal.setTime(date);
this.iniCalender();
this.showMe();
}
//返回日期对象
public Date getTime() ...{
return cal.getTime();
}
//返回当前的日
public int getDay() ...{
return day;
}
//设置当前的日
public void setDay(int day) ...{
this.day = day;
cal.set(this.year, this.month, this.day);
this.showMe();
&nb, sp; }
//设置当前的年
public void setYear(int year) ...{
this.year = year;
cal.set(this.year, this.month, this.day);
this.showMe();
}
//返回当前的年
public int getYear() ...{
return year;
}
//返回当前的月
public int getMonth() ...{
return month;
}
//设置当前的月
public void setMonth(int month) ...{
this.month = month;
cal.set(this.year, this.month, this.day);
this.showMe();
}
//刷新
public void showMe() ...{
this.showDays();
this.showMonth();
this.showYear();
this.showDate();
}
private class NoFocusButton extends JButton ...{
public NoFocusButton(ImageIcon icon) ...{
super(icon);
setFocusPainted(false);
setRolloverEnabled(true);
}
public boolean isFocusTraversable() ...{
return false;
}
public void requestFocus() ...{}
}
}
- java日期控件--4--MyCalendarPanel.java
- Java日期选择控件
- Java日期选择控件
- java日期选择控件
- Java日期选择控件
- java script 的日期控件
- java 日期控件,jbutton触发
- Java图形界面:表格、日期控件
- java日期控件--1--Calendar.java
- java日期控件--2--MyCalendar.java
- java日期控件--3--MyCalendar_AboutBox.java
- Java制作的日期选择控件
- JAVA Swing日期下拉选择控件(面板)
- java中搜索的日期控件
- Java Swing日期,时间选择控件
- JAVA & 日期
- JAVA & 日期
- Java日期
- java生成无重复随机数的2种方法
- 使用jsp生成彩色汉字验证码
- java日期控件--1--Calendar.java
- java日期控件--2--MyCalendar.java
- java日期控件--3--MyCalendar_AboutBox.java
- java日期控件--4--MyCalendarPanel.java
- EntityFramework 学习之一 —— 模型概述与环境搭建 .
- JAVA小画板(应用程序)
- Swing中弹出对话框的几种方式
- 一个struts的分页-sql server存储过程版(等数据库)分页
- Java 8 的重要新特性以及 Java 9、10 的发展规划
- 在JSP页面中实现检索数据的分页显示
- CVS常用命令速查手册
- JAVA反编译工具jad的简单用法