单时间组件
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.util.Date;
import java.util.Locale;
import javax.swing.JPanel;
import com.eltima.components.ui.DatePicker;
/**
* 时间选择框输入框
*
* @author luojialin
* @since 2014-3-14
*/
public class SFDatePicker extends JPanel {
private static final long serialVersionUID = 3385428174172494736L;
/*日期显示格式*/
public static final String YYYY_MM_DD = "yyyy-MM-dd";
/*日期时间格式*/
public static final String YYY_MM_DD_HH_MM_SS = "yyyy-MM-dd hh:mm:ss";
private static Font font=new Font("Times New Roman", Font.PLAIN, 14);
private static Dimension dimension=new Dimension(100,24);
private DatePicker startDatepick;
public SFDatePicker() {
this(YYY_MM_DD_HH_MM_SS);
}
public SFDatePicker(String formate) {
super();
this.setOpaque(false);
startDatepick = new DatePicker(new Date(),formate,font,dimension);
startDatepick.setLocale(Locale.CHINA);//设置国家
startDatepick.setTimePanleVisible(true);//设置时钟面板可见
startDatepick.setBorder(null);
this.setLayout(new FlowLayout(FlowLayout.LEFT));
this.add(startDatepick);
}
/**
* 设置是否可以使用
* @param flag
*/
public void setEnable(boolean flag){
this.setEnabled(flag);
}
/**
* 获取控件时间
* @return
*/
public Date getDate(){
return (Date)startDatepick.getValue();
}
/**
* 设置控件时间
* @param date
*/
public void setDate(Date date){
startDatepick.a(date);
}
/**
* 设置 日期时间 显示样式
* @param formate
* 格式:YYYY_MM_DD</P>
* YYY_MM_DD_HH_MM_SS</P>
*/
public void setFormat(String format){
Date date = new Date();
if(SFDatePicker.YYYY_MM_DD.equals(format)){
format = YYYY_MM_DD;
startDatepick = new DatePicker(date,format,font,dimension);
startDatepick = new DatePicker(date,format,font,dimension);
startDatepick.setTimePanleVisible(false);
}else if(SFDatePicker.YYY_MM_DD_HH_MM_SS.equals(format)){
format = YYY_MM_DD_HH_MM_SS;
startDatepick = new DatePicker(date,format,font,dimension);
startDatepick = new DatePicker(date,format,font,dimension);
startDatepick.setTimePanleVisible(true);
}
}
public void clearDatePicker(){
startDatepick.getInnerTextField().setText("");
}
}
双时间组件
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import javax.swing.JLabel;
import com.eltima.components.ui.DatePicker;
import com.sf.framework.i18n.Messages;
import com.sf.module.pcss.core.message.MessageManager;
/**
* 双时间选择框输入框
*
* @author luojialin
* @since 2014-2-21
*/
public class DoubleDatePicker extends javax.swing.JPanel {
private static final long serialVersionUID = 3385428174172494736L;
/*日期显示格式*/
public static final String YYYY_MM_DD = "yyyy-MM-dd";
/*日期时间格式*/
public static final String YYY_MM_DD_HH_MM_SS = "yyyy-MM-dd hh:mm:ss";
private static Font font=new Font("Times New Roman", Font.PLAIN, 14);
private static Dimension dimension=new Dimension(100,24);
/**
*开始时间
*/
private DatePicker startDatepick;
/**
* 结束时间
*/
private DatePicker endDatepick;
private JLabel betwenLbl;
private JLabel redStartLbl;
/**红星**/
public boolean redStart = false;
public DoubleDatePicker() {
this(null,false);
}
/**
* 双时间组件</P>
* 支持日期格式 :"yyyy-MM-dd"
* 支持日期时间格式:"yyyy-MM-dd hh:mm:ss"
* @param title 两个时间之间的 文字
*/
public DoubleDatePicker(String title) {
this(title, false);
}
/**
* 双时间组件</P>
* 支持日期格式 :"yyyy-MM-dd"
* 支持日期时间格式:"yyyy-MM-dd hh:mm:ss"
*
* @param title 两个时间之间的 文字
* @param redStart 是否显示 * 号
*/
public DoubleDatePicker(String title, boolean redStart) {
super();
initGUI(title,null, redStart);
}
/**
* 双时间组件</P>
* 支持日期格式 :"yyyy-MM-dd"
* 支持日期时间格式:"yyyy-MM-dd hh:mm:ss"
*
* @param title 两个时间之间的 文字
* @param formate 显示 格式
*/
public DoubleDatePicker(String title, String formate) {
super();
initGUI(title,formate, false);
}
private void initGUI(String title, String formate, boolean redStart){
this.setOpaque(false);
betwenLbl = new JLabel(title);
startDatepick = new DatePicker(new Date(),formate,font,dimension);
endDatepick = new DatePicker(new Date(),formate,font,dimension);
if(redStart)
redStartLbl = new JLabel("<html><font color = red>* </font></html>");
else
redStartLbl = new JLabel();
startDatepick.setLocale(Locale.CHINA);//设置国家
startDatepick.setTimePanleVisible(true);//设置时钟面板可见
startDatepick.setBorder(null);
endDatepick.setLocale(Locale.CHINA);//设置国家
endDatepick.setTimePanleVisible(true);//设置时钟面板可见
endDatepick.setBorder(null);
startDatepick.setPreferredSize(dimension);
endDatepick.setPreferredSize(dimension);
this.setLayout(new FlowLayout(FlowLayout.LEFT));
this.add(startDatepick);
this.add(betwenLbl);
this.add(endDatepick);
this.add(redStartLbl);
this.startDatepick.getInnerTextField().addFocusListener(new FocusListener(){
@Override
public void focusGained(FocusEvent e) {
}
@Override
public void focusLost(FocusEvent e) {
if("".equals(startDatepick.getText().trim())){
startDatepick.getInnerTextField().setValue(null);
}else{
verify();
}
}
});
this.endDatepick.getInnerTextField().addFocusListener(new FocusListener(){
@Override
public void focusGained(FocusEvent e) {
}
@Override
public void focusLost(FocusEvent e) {
if("".equals(endDatepick.getText().trim())){
endDatepick.getInnerTextField().setValue(null);
}else{
verify();
}
}
});
//this.setPreferredSize(new Dimension(600, 30));
}
private void verify(){
Date start = (Date)startDatepick.getValue();
Date end = (Date)endDatepick.getValue();
if(start != null && end != null){
if(start.after(end)){
MessageManager.getInstance().error("",Messages.getString("time.setting.error"));
endDatepick.getInnerTextField().setValue(null);
}
}
}
/**
* 设置是否可以使用
* @param flag
*/
public void setEnable(boolean flag){
this.startDatepick.setEnabled(flag);
this.endDatepick.setEnabled(flag);
}
/**
* 获取时间</P>
*
* 返回List 格式的 Date 数组
* @return
*/
public List<Date> getDate(){
Date start = (Date)this.startDatepick.getValue();
Date end = (Date)this.endDatepick.getValue();
List<Date> list = new ArrayList<Date>();
list.add(start);
list.add(end);
return list;
}
/**
* 获取第一个控件时间
* @return
*/
public Date getFirstDate(){
return (Date)this.startDatepick.getValue();
}
/**
* 获取第二个控件时间
* @return
*/
public Date getSecondDate(){
return (Date)this.endDatepick.getValue();
}
/**
* 设置第一个控件时间
* @param date
*/
public void setFirstDate(Date date){
startDatepick.a(date);
}
/**
* 设置第二个控件时间
* @param date
*/
public void setSecondDate(Date date){
endDatepick.a(date);
}
public void setDate(List<Date> list){
if(list.get(0) != null && list != null)
startDatepick.a(list.get(0));
if(list.get(1) != null && list != null)
endDatepick.a(list.get(1));
}
public boolean isRedStart() {
return redStart;
}
/**
* 设置红星
* @param redStart
*/
public void setRedStart(boolean redStart) {
if(redStart){
redStartLbl.setText("<html><font color = red>* </font></html>");
redStart = true;
}else{
redStartLbl.setText("");
redStart = false;
}
}
/**
* 设置 日期时间 显示样式
* @param formate
* 格式:YYYY_MM_DD</P>
* YYY_MM_DD_HH_MM_SS</P>
*/
public void setFormat(String format){
Date date = new Date();
if(DoubleDatePicker.YYYY_MM_DD.equals(format)){
format = YYYY_MM_DD;
startDatepick = new DatePicker(date,format,font,dimension);
endDatepick = new DatePicker(date,format,font,dimension);
startDatepick.setTimePanleVisible(false);
}else if(DoubleDatePicker.YYY_MM_DD_HH_MM_SS.equals(format)){
format = YYY_MM_DD_HH_MM_SS;
startDatepick = new DatePicker(date,format,font,dimension);
endDatepick = new DatePicker(date,format,font,dimension);
startDatepick.setTimePanleVisible(true);
}
}
public void setTitleFont(Font font){
this.redStartLbl.setFont(font);
this.betwenLbl.setFont(font);
}
public void setDatePickerFont(Font font){
this.startDatepick.setFont(font);
this.endDatepick.setFont(font);
}
public void setDatePickerSize(Dimension dimsion){
this.startDatepick.setPreferredSize(dimsion);
this.endDatepick.setPreferredSize(dimsion);
}
public DatePicker getStartDatepick() {
return startDatepick;
}
public void setStartDatepick(DatePicker startDatepick) {
this.startDatepick = startDatepick;
}
public DatePicker getEndDatepick() {
return endDatepick;
}
public void setEndDatepick(DatePicker endDatepick) {
this.endDatepick = endDatepick;
}
public void clearDatePicker(){
startDatepick.getInnerTextField().setText("");
endDatepick.getInnerTextField().setText("");
}
}