高分求swing的日期控件 謝謝×××××××××××××××××××××××××××××××××××××××××× 求一個swing的日期控件 要好用的 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 日期控件代码:只有一个class,但由于字数有限制,因此要分开发import java.awt.BorderLayout;import java.awt.Color;import java.awt.Dimension;import java.awt.FlowLayout;import java.awt.Font;import java.awt.Frame;import java.awt.GridLayout;import java.awt.Point;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import javax.swing.JButton;import javax.swing.JDialog;import javax.swing.JFrame;import javax.swing.JFormattedTextField;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JSpinner;import javax.swing.SpinnerNumberModel;import javax.swing.SwingConstants;import javax.swing.SwingUtilities;import javax.swing.border.LineBorder;import javax.swing.event.ChangeEvent;import javax.swing.event.ChangeListener;public class DateChooser extends JPanel implements ActionListener, ChangeListener { /** * */ private static final long serialVersionUID = 1L; int startYear = 1980; //默认【最小】显示年份 int lastYear = 2050; //默认【最大】显示年份 int width = 270; //界面宽度 int height = 200; //界面高度 Color backGroundColor = Color.gray; //底色 //月历表格配色----------------// Color palletTableColor = Color.white; //日历表底色 Color todayBackColor = Color.orange; //今天背景色 Color weekFontColor = Color.blue; //星期文字色 Color dateFontColor = Color.black; //日期文字色 Color weekendFontColor = Color.red; //周末文字色 //控制条配色------------------// Color controlLineColor = Color.pink; //控制条底色 Color controlTextColor = Color.white; //控制条标签文字色 Color rbFontColor = Color.white; //RoundBox文字色 Color rbBorderColor = Color.red; //RoundBox边框色 Color rbButtonColor = Color.pink; //RoundBox按钮色 Color rbBtFontColor = Color.red; //RoundBox按钮文字色 JDialog dialog; //用于显示日期选择控件 JSpinner yearSpin; //调节年份的JSpinner JSpinner monthSpin; //调节月份 JSpinner hourSpin; //调节小时 JSpinner minuteSpin;//调节分钟 JButton[][] daysButton = new JButton[6][7];//用于显示当前月份每一天所对应的星期的按钮数组 JFormattedTextField jFormattedTextField;//显示当前选择日期的有格式输入框 Calendar c = getCalendar(); DateChooser(JFormattedTextField jftf) { jFormattedTextField = jftf; //设置布局及边框 setLayout(new BorderLayout()); setBorder(new LineBorder(backGroundColor, 2)); setBackground(backGroundColor); //初始化及添加子面板 JPanel topYearAndMonth = createYearAndMonthPanal(); add(topYearAndMonth, BorderLayout.NORTH); JPanel centerWeekAndDay = createWeekAndDayPanal(); add(centerWeekAndDay, BorderLayout.CENTER); } /** * * 功能描述:用于创建年份及月份显示面板 * @return 用于创建年份及月份显示面板JPanel对象 */ private JPanel createYearAndMonthPanal() { int currentYear = c.get(Calendar.YEAR); int currentMonth = c.get(Calendar.MONTH) + 1; int currentHour = c.get(Calendar.HOUR_OF_DAY); int currentMinute = c.get(Calendar.MINUTE); JPanel result = new JPanel(); result.setLayout(new FlowLayout()); result.setBackground(controlLineColor); yearSpin = new JSpinner(new SpinnerNumberModel(currentYear, startYear, lastYear, 1)); yearSpin.setPreferredSize(new Dimension(48, 20)); yearSpin.setName("Year"); yearSpin.setEditor(new JSpinner.NumberEditor(yearSpin, "####")); yearSpin.addChangeListener(this); result.add(yearSpin); JLabel yearLabel = new JLabel("年"); yearLabel.setForeground(controlTextColor); result.add(yearLabel); monthSpin = new JSpinner(new SpinnerNumberModel(currentMonth, 1, 12, 1)); monthSpin.setPreferredSize(new Dimension(35, 20)); monthSpin.setName("Month"); monthSpin.addChangeListener(this); result.add(monthSpin); JLabel monthLabel = new JLabel("月"); monthLabel.setForeground(controlTextColor); result.add(monthLabel); hourSpin = new JSpinner(new SpinnerNumberModel(currentHour, 0, 23, 1)); hourSpin.setPreferredSize(new Dimension(35, 20)); hourSpin.setName("Hour"); hourSpin.addChangeListener(this); result.add(hourSpin); JLabel hourLabel = new JLabel("时"); hourLabel.setForeground(controlTextColor); result.add(hourLabel); minuteSpin = new JSpinner(new SpinnerNumberModel(currentMinute, 0, 59, 1)); minuteSpin.setPreferredSize(new Dimension(35, 20)); minuteSpin.setName("Minute"); minuteSpin.addChangeListener(this); result.add(minuteSpin); JLabel minuteLabel = new JLabel("分"); minuteLabel.setForeground(controlTextColor); result.add(minuteLabel); return result; } 第二部分/** * * 功能描述:用于创建当前月份中每一天按对应星期排列所在面板 * @return */ private JPanel createWeekAndDayPanal() { String colname[] = { "日", "一", "二", "三", "四", "五", "六" }; JPanel result = new JPanel(); //设置固定字体,以免调用环境改变影响界面美观 result.setFont(new Font("宋体", Font.PLAIN, 12)); result.setLayout(new GridLayout(7, 7)); result.setBackground(Color.white); JLabel cell; //显示星期 for (int i = 0; i < 7; i++) { cell = new JLabel(colname[i]); cell.setHorizontalAlignment(JLabel.CENTER); if (i == 0 || i == 6) cell.setForeground(weekendFontColor); else cell.setForeground(weekFontColor); result.add(cell); } int actionCommandId = 0; for (int i = 0; i < 6; i++) for (int j = 0; j < 7; j++) { JButton numberButton = new JButton(); numberButton.setBorder(null); numberButton.setHorizontalAlignment(SwingConstants.CENTER); numberButton.setActionCommand(String.valueOf(actionCommandId)); numberButton.addActionListener(this); numberButton.setBackground(palletTableColor); numberButton.setForeground(dateFontColor); if (j == 0 || j == 6) numberButton.setForeground(weekendFontColor); else numberButton.setForeground(dateFontColor); daysButton[i][j] = numberButton; numberButton.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { if (e.getClickCount() == 2) { closeAndSetDate(); } } }); result.add(numberButton); actionCommandId++; } return result; } private JDialog createDialog(Frame owner) { JDialog result = new JDialog(owner, "日期时间选择", true); result.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE); result.getContentPane().add(this, BorderLayout.CENTER); result.pack(); result.setSize(width, height); return result; } public void showDateChooser(Point position) { Object tmpobj=SwingUtilities.getWindowAncestor(jFormattedTextField); if(tmpobj.getClass().isInstance(new JDialog())||tmpobj.getClass().getSuperclass().isInstance(new JDialog())) { JDialog ownerdialog = (JDialog) SwingUtilities .getWindowAncestor(jFormattedTextField); Frame owner = (Frame) SwingUtilities.getWindowAncestor(ownerdialog); if (dialog == null || dialog.getOwner() != owner) { dialog = createDialog(owner); } dialog.setLocation(getAppropriateLocation(owner, position)); } else if(tmpobj.getClass().isInstance(new JFrame())||tmpobj.getClass().getSuperclass().isInstance(new JFrame())) { JFrame ownerFrame = (JFrame) SwingUtilities .getWindowAncestor(jFormattedTextField); if (dialog == null || dialog.getOwner() != ownerFrame) { dialog = createDialog(ownerFrame); } dialog.setLocation(getAppropriateLocation(ownerFrame, position)); } flushWeekAndDay(); dialog.setVisible(true); } Point getAppropriateLocation(Frame owner, Point position) { Point result = new Point(position); Point p = owner.getLocation(); int offsetX = (position.x + width) - (p.x + owner.getWidth()); int offsetY = (position.y + height) - (p.y + owner.getHeight()); if (offsetX > 0) { result.x -= offsetX; } if (offsetY > 0) { result.y -= offsetY; } return result; } public void closeAndSetDate() { setDate(c.getTime()); dialog.dispose(); } private Calendar getCalendar() { Calendar result = Calendar.getInstance(); result.setTime(getDate()); return result; } private int getSelectedYear() { return ((Integer) yearSpin.getValue()).intValue(); } private int getSelectedMonth() { return ((Integer) monthSpin.getValue()).intValue(); } private int getSelectedHour() { return ((Integer) hourSpin.getValue()).intValue(); } private int getSelectedMinute() { return ((Integer) minuteSpin.getValue()).intValue(); } private void dayColorUpdate(boolean isOldDay) { int day = c.get(Calendar.DAY_OF_MONTH); c.set(Calendar.DAY_OF_MONTH, 1); int actionCommandId = day - 2 + c.get(Calendar.DAY_OF_WEEK); int i = actionCommandId / 7; int j = actionCommandId % 7; if (isOldDay) daysButton[i][j].setForeground(dateFontColor); else daysButton[i][j].setForeground(todayBackColor); } private void flushWeekAndDay() { c.set(Calendar.DAY_OF_MONTH, 1); int maxDayNo = c.getActualMaximum(Calendar.DAY_OF_MONTH); int dayNo = 2 - c.get(Calendar.DAY_OF_WEEK); for (int i = 0; i < 6; i++) { for (int j = 0; j < 7; j++) { String s = ""; if (dayNo >= 1 && dayNo <= maxDayNo) s = String.valueOf(dayNo); daysButton[i][j].setText(s); dayNo++; } } dayColorUpdate(false); } public void stateChanged(ChangeEvent e) { JSpinner source = (JSpinner) e.getSource(); if (source.getName().equals("Minute")) { c.set(Calendar.MINUTE, getSelectedMinute()); return; } if (source.getName().equals("Hour")) { c.set(Calendar.HOUR_OF_DAY, getSelectedHour()); return; } dayColorUpdate(true); if (source.getName().equals("Year")) { c.set(Calendar.YEAR, getSelectedYear()); } if (source.getName().equals("Month")) { c.set(Calendar.MONTH, getSelectedMonth() - 1); } flushWeekAndDay(); } public void actionPerformed(ActionEvent e) { JButton source = (JButton) e.getSource(); if (source.getText().length() == 0) return; dayColorUpdate(true); source.setForeground(todayBackColor); int newDay = Integer.parseInt(source.getText()); c.set(Calendar.DAY_OF_MONTH, newDay); } public void setDate(Date date) { jFormattedTextField.setText(getDefaultDateFormat().format(date)); } public Date getDate() { try { String dateString = jFormattedTextField.getText(); return getDefaultDateFormat().parse(dateString); } catch (ParseException e) { return getNowDate(); } catch (Exception ee) { return getNowDate(); } } private static Date getNowDate() { return Calendar.getInstance().getTime(); } private static SimpleDateFormat getDefaultDateFormat() { return new SimpleDateFormat("yyyy-MM-dd HH:mm"); }} 测试代码package demo;import java.awt.Point;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFormattedTextField;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;public class DemoForDateChooser extends JFrame { private JFormattedTextField formattedTextField; /** * Launch the application * @param args */ public static void main(String args[]) { try { DemoForDateChooser frame = new DemoForDateChooser(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } /** * Create the frame */ public DemoForDateChooser() { super(); setTitle("日期选择框"); getContentPane().setLayout(null); setBounds(100, 100, 383, 137); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); final JPanel panel = new JPanel(); panel.setLayout(null); panel.setBounds(0, 0, 375, 107); getContentPane().add(panel); formattedTextField = new JFormattedTextField(); formattedTextField.setBounds(68, 48, 175, 23); final JButton button = new JButton(); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { DateChooser mDateChooser=new DateChooser(formattedTextField); //设置DateChooser弹出位置 Point p = button.getLocationOnScreen(); p.y = p.y + 30; mDateChooser.showDateChooser(p); formattedTextField.requestFocusInWindow(); } }); button.setText("选择日期"); button.setBounds(249, 47, 99, 23); panel.add(button); final JLabel label = new JLabel(); label.setText("日期:"); label.setBounds(10, 47, 71, 23); panel.add(label); panel.add(formattedTextField); // }} 谢谢, 刚学习java ,学习!! 字符串分割问题 java 字节数组里面到底存的什么东西.... List能被反序列化吗? 字符串1@22@3@,用split切割时,如果一个@后为'',会发生数组越界的情况,这种情况如何处理。 怎么得到月末日啊? 数据库读不出数据,在线等待,谢谢!! 不可能吧 java指针 等待解决字符集转换的问题 双字节字段的类型数据显示 求个算法 为什么用加号不能分割呢?请大家给个解释 利用itext对pdf内容进行检索,在指定位置找出关键词的问题
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JFormattedTextField;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSpinner;
import javax.swing.SpinnerNumberModel;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;
import javax.swing.border.LineBorder;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public class DateChooser extends JPanel implements ActionListener,
ChangeListener {
/**
*
*/
private static final long serialVersionUID = 1L; int startYear = 1980; //默认【最小】显示年份 int lastYear = 2050; //默认【最大】显示年份 int width = 270; //界面宽度 int height = 200; //界面高度 Color backGroundColor = Color.gray; //底色 //月历表格配色----------------//
Color palletTableColor = Color.white; //日历表底色 Color todayBackColor = Color.orange; //今天背景色 Color weekFontColor = Color.blue; //星期文字色 Color dateFontColor = Color.black; //日期文字色 Color weekendFontColor = Color.red; //周末文字色 //控制条配色------------------//
Color controlLineColor = Color.pink; //控制条底色 Color controlTextColor = Color.white; //控制条标签文字色 Color rbFontColor = Color.white; //RoundBox文字色 Color rbBorderColor = Color.red; //RoundBox边框色 Color rbButtonColor = Color.pink; //RoundBox按钮色 Color rbBtFontColor = Color.red; //RoundBox按钮文字色 JDialog dialog; //用于显示日期选择控件 JSpinner yearSpin; //调节年份的JSpinner JSpinner monthSpin; //调节月份 JSpinner hourSpin; //调节小时 JSpinner minuteSpin;//调节分钟 JButton[][] daysButton = new JButton[6][7];//用于显示当前月份每一天所对应的星期的按钮数组 JFormattedTextField jFormattedTextField;//显示当前选择日期的有格式输入框 Calendar c = getCalendar();
DateChooser(JFormattedTextField jftf) {
jFormattedTextField = jftf;
//设置布局及边框
setLayout(new BorderLayout());
setBorder(new LineBorder(backGroundColor, 2));
setBackground(backGroundColor); //初始化及添加子面板
JPanel topYearAndMonth = createYearAndMonthPanal();
add(topYearAndMonth, BorderLayout.NORTH);
JPanel centerWeekAndDay = createWeekAndDayPanal();
add(centerWeekAndDay, BorderLayout.CENTER);
} /**
*
* 功能描述:用于创建年份及月份显示面板
* @return 用于创建年份及月份显示面板JPanel对象
*/
private JPanel createYearAndMonthPanal() {
int currentYear = c.get(Calendar.YEAR);
int currentMonth = c.get(Calendar.MONTH) + 1;
int currentHour = c.get(Calendar.HOUR_OF_DAY);
int currentMinute = c.get(Calendar.MINUTE); JPanel result = new JPanel();
result.setLayout(new FlowLayout());
result.setBackground(controlLineColor); yearSpin = new JSpinner(new SpinnerNumberModel(currentYear, startYear,
lastYear, 1));
yearSpin.setPreferredSize(new Dimension(48, 20));
yearSpin.setName("Year");
yearSpin.setEditor(new JSpinner.NumberEditor(yearSpin, "####"));
yearSpin.addChangeListener(this);
result.add(yearSpin); JLabel yearLabel = new JLabel("年");
yearLabel.setForeground(controlTextColor);
result.add(yearLabel); monthSpin = new JSpinner(new SpinnerNumberModel(currentMonth, 1, 12, 1));
monthSpin.setPreferredSize(new Dimension(35, 20));
monthSpin.setName("Month");
monthSpin.addChangeListener(this);
result.add(monthSpin); JLabel monthLabel = new JLabel("月");
monthLabel.setForeground(controlTextColor);
result.add(monthLabel); hourSpin = new JSpinner(new SpinnerNumberModel(currentHour, 0, 23, 1));
hourSpin.setPreferredSize(new Dimension(35, 20));
hourSpin.setName("Hour");
hourSpin.addChangeListener(this);
result.add(hourSpin); JLabel hourLabel = new JLabel("时");
hourLabel.setForeground(controlTextColor);
result.add(hourLabel); minuteSpin = new JSpinner(new SpinnerNumberModel(currentMinute, 0, 59,
1));
minuteSpin.setPreferredSize(new Dimension(35, 20));
minuteSpin.setName("Minute");
minuteSpin.addChangeListener(this);
result.add(minuteSpin); JLabel minuteLabel = new JLabel("分");
minuteLabel.setForeground(controlTextColor);
result.add(minuteLabel);
return result;
}
*
* 功能描述:用于创建当前月份中每一天按对应星期排列所在面板
* @return
*/
private JPanel createWeekAndDayPanal() {
String colname[] = { "日", "一", "二", "三", "四", "五", "六" };
JPanel result = new JPanel();
//设置固定字体,以免调用环境改变影响界面美观
result.setFont(new Font("宋体", Font.PLAIN, 12));
result.setLayout(new GridLayout(7, 7));
result.setBackground(Color.white);
JLabel cell; //显示星期 for (int i = 0; i < 7; i++) {
cell = new JLabel(colname[i]);
cell.setHorizontalAlignment(JLabel.CENTER);
if (i == 0 || i == 6)
cell.setForeground(weekendFontColor);
else
cell.setForeground(weekFontColor);
result.add(cell);
} int actionCommandId = 0;
for (int i = 0; i < 6; i++)
for (int j = 0; j < 7; j++) {
JButton numberButton = new JButton();
numberButton.setBorder(null);
numberButton.setHorizontalAlignment(SwingConstants.CENTER);
numberButton.setActionCommand(String.valueOf(actionCommandId));
numberButton.addActionListener(this);
numberButton.setBackground(palletTableColor);
numberButton.setForeground(dateFontColor);
if (j == 0 || j == 6)
numberButton.setForeground(weekendFontColor);
else
numberButton.setForeground(dateFontColor);
daysButton[i][j] = numberButton;
numberButton.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) {
closeAndSetDate();
}
}
});
result.add(numberButton);
actionCommandId++;
} return result;
} private JDialog createDialog(Frame owner) {
JDialog result = new JDialog(owner, "日期时间选择", true);
result.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE);
result.getContentPane().add(this, BorderLayout.CENTER);
result.pack();
result.setSize(width, height);
return result;
}
public void showDateChooser(Point position) {
Object tmpobj=SwingUtilities.getWindowAncestor(jFormattedTextField);
if(tmpobj.getClass().isInstance(new JDialog())||tmpobj.getClass().getSuperclass().isInstance(new JDialog()))
{
JDialog ownerdialog = (JDialog) SwingUtilities
.getWindowAncestor(jFormattedTextField);
Frame owner = (Frame) SwingUtilities.getWindowAncestor(ownerdialog);
if (dialog == null || dialog.getOwner() != owner) {
dialog = createDialog(owner);
}
dialog.setLocation(getAppropriateLocation(owner, position));
}
else if(tmpobj.getClass().isInstance(new JFrame())||tmpobj.getClass().getSuperclass().isInstance(new JFrame()))
{
JFrame ownerFrame = (JFrame) SwingUtilities
.getWindowAncestor(jFormattedTextField);
if (dialog == null || dialog.getOwner() != ownerFrame) {
dialog = createDialog(ownerFrame);
}
dialog.setLocation(getAppropriateLocation(ownerFrame, position));
}
flushWeekAndDay();
dialog.setVisible(true);
} Point getAppropriateLocation(Frame owner, Point position) {
Point result = new Point(position);
Point p = owner.getLocation();
int offsetX = (position.x + width) - (p.x + owner.getWidth());
int offsetY = (position.y + height) - (p.y + owner.getHeight()); if (offsetX > 0) {
result.x -= offsetX;
} if (offsetY > 0) {
result.y -= offsetY;
} return result; } public void closeAndSetDate() {
setDate(c.getTime());
dialog.dispose();
} private Calendar getCalendar() {
Calendar result = Calendar.getInstance();
result.setTime(getDate());
return result;
} private int getSelectedYear() {
return ((Integer) yearSpin.getValue()).intValue();
} private int getSelectedMonth() {
return ((Integer) monthSpin.getValue()).intValue();
} private int getSelectedHour() {
return ((Integer) hourSpin.getValue()).intValue();
} private int getSelectedMinute() {
return ((Integer) minuteSpin.getValue()).intValue();
} private void dayColorUpdate(boolean isOldDay) {
int day = c.get(Calendar.DAY_OF_MONTH);
c.set(Calendar.DAY_OF_MONTH, 1);
int actionCommandId = day - 2 + c.get(Calendar.DAY_OF_WEEK);
int i = actionCommandId / 7;
int j = actionCommandId % 7;
if (isOldDay)
daysButton[i][j].setForeground(dateFontColor);
else
daysButton[i][j].setForeground(todayBackColor);
} private void flushWeekAndDay() {
c.set(Calendar.DAY_OF_MONTH, 1);
int maxDayNo = c.getActualMaximum(Calendar.DAY_OF_MONTH);
int dayNo = 2 - c.get(Calendar.DAY_OF_WEEK);
for (int i = 0; i < 6; i++) {
for (int j = 0; j < 7; j++) {
String s = "";
if (dayNo >= 1 && dayNo <= maxDayNo)
s = String.valueOf(dayNo);
daysButton[i][j].setText(s);
dayNo++;
}
}
dayColorUpdate(false);
} public void stateChanged(ChangeEvent e) {
JSpinner source = (JSpinner) e.getSource();
if (source.getName().equals("Minute")) {
c.set(Calendar.MINUTE, getSelectedMinute());
return;
}
if (source.getName().equals("Hour")) {
c.set(Calendar.HOUR_OF_DAY, getSelectedHour());
return;
}
dayColorUpdate(true);
if (source.getName().equals("Year")) {
c.set(Calendar.YEAR, getSelectedYear());
}
if (source.getName().equals("Month")) {
c.set(Calendar.MONTH, getSelectedMonth() - 1);
}
flushWeekAndDay();
} public void actionPerformed(ActionEvent e) {
JButton source = (JButton) e.getSource();
if (source.getText().length() == 0)
return;
dayColorUpdate(true);
source.setForeground(todayBackColor);
int newDay = Integer.parseInt(source.getText());
c.set(Calendar.DAY_OF_MONTH, newDay);
} public void setDate(Date date) {
jFormattedTextField.setText(getDefaultDateFormat().format(date));
} public Date getDate() { try {
String dateString = jFormattedTextField.getText();
return getDefaultDateFormat().parse(dateString);
} catch (ParseException e) {
return getNowDate();
} catch (Exception ee) {
return getNowDate();
}
} private static Date getNowDate() {
return Calendar.getInstance().getTime();
} private static SimpleDateFormat getDefaultDateFormat() {
return new SimpleDateFormat("yyyy-MM-dd HH:mm");
}
}
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;public class DemoForDateChooser extends JFrame { private JFormattedTextField formattedTextField;
/**
* Launch the application
* @param args
*/
public static void main(String args[]) {
try {
DemoForDateChooser frame = new DemoForDateChooser();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
} /**
* Create the frame
*/
public DemoForDateChooser() {
super();
setTitle("日期选择框");
getContentPane().setLayout(null);
setBounds(100, 100, 383, 137);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); final JPanel panel = new JPanel();
panel.setLayout(null);
panel.setBounds(0, 0, 375, 107);
getContentPane().add(panel); formattedTextField = new JFormattedTextField();
formattedTextField.setBounds(68, 48, 175, 23);
final JButton button = new JButton();
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
DateChooser mDateChooser=new DateChooser(formattedTextField);
//设置DateChooser弹出位置
Point p = button.getLocationOnScreen();
p.y = p.y + 30;
mDateChooser.showDateChooser(p);
formattedTextField.requestFocusInWindow();
}
});
button.setText("选择日期");
button.setBounds(249, 47, 99, 23);
panel.add(button); final JLabel label = new JLabel();
label.setText("日期:");
label.setBounds(10, 47, 71, 23);
panel.add(label);
panel.add(formattedTextField);
//
}}