精华内容
下载资源
问答
  • 日期选择控件

    2017-12-06 15:17:30
    日期选择控件
  • 日期选择控件

    2019-02-20 16:39:20
    日期选择控件库,丰富多彩的日期选择控件库,好的控件库
  • 一起学习一次项目研发中需要日期时间选择控件,网上提供的不多,且质量一般,所以只好自己做,参考了 网上某位同学的 作品 Jave 日期选择控件 DateChooser 。目前的代码将日期时间选择封装在一个按钮组件内,应该很...

    一起学习

    一次项目研发中需要日期时间选择控件,

    网上提供的不多,

    且质量一般,

    所以只好自己做,参考了 网上某位同学的 作品 Jave 日期选择控件 DateChooser 。

    目前的代码将日期时间选择封装在一个按钮组件内,

    应该很好用,支持Application 、Applet

    import java.util.Date;

    import java.util.Calendar;

    import java.text.DateFormat;

    import java.text.SimpleDateFormat;

    import java.text.ParseException ;

    import java.awt.Color ;

    import java.awt.Font;

    import java.awt.Point ;

    import java.awt.Dimension ;

    import java.awt.BorderLayout ;

    import java.awt.FlowLayout ;

    import java.awt.GridLayout ;

    import java.awt.Component ;

    import java.awt.Cursor ;

    import java.awt.Frame ;

    import java.awt.event.ActionEvent;

    import java.awt.event.ActionListener;

    import java.awt.event.MouseListener;

    import java.awt.event.MouseAdapter;

    import java.awt.event.MouseEvent;

    //import javax.swing.JFrame;

    import javax.swing.JButton;

    import javax.swing.JDialog;

    import javax.swing.JPanel;

    import javax.swing.JLabel;

    import javax.swing.JSpinner ;

    import javax.swing.JSpinner.NumberEditor ;

    import javax.swing.SpinnerNumberModel;

    import javax.swing.SwingUtilities;

    import javax.swing.SwingConstants ;

    import javax.swing.event.ChangeListener ;

    import javax.swing.event.ChangeEvent ;

    import javax.swing.border.LineBorder ;

    public class DateChooserJButton extends JButton {

    private DateChooser dateChooser =null;

    private String preLabel ="" ;

    public DateChooserJButton() {

    this(getNowDate()) ;

    }

    public DateChooserJButton(SimpleDateFormat df , String dateString) {

    this() ;

    setText(df,dateString) ;

    }

    public DateChooserJButton(Date date) {

    this("",date);

    }

    public DateChooserJButton(String preLabel , Date date) {

    if (preLabel!=null) this.preLabel = preLabel ;

    setDate(date) ;

    setBorder(null) ;

    setCursor(new Cursor(Cursor.HAND_CURSOR)) ;

    super.addActionListener( new ActionListener() {

    public void actionPerformed(ActionEvent e) {

    if (dateChooser==null) dateChooser = new DateChooser();

    Point p = getLocationOnScreen() ;

    p.y = p.y 30 ;

    dateChooser.showDateChooser(p) ;

    }

    }) ;

    }

    private static Date getNowDate() {

    return Calendar.getInstance().getTime() ;

    }

    private static SimpleDateFormat getDefaultDateFormat() {

    return new SimpleDateFormat("yyyy年MM月dd日HH时") ;

    }

    //覆盖父类的方法

    public void setText(String s) {

    Date date ;

    try {

    date = getDefaultDateFormat().parse(s) ;

    }catch (ParseException e) {

    date = getNowDate() ;

    }

    setDate(date) ;

    }

    public void setText(SimpleDateFormat df , String s) {

    Date date ;

    try {

    date = df.parse(s) ;

    }catch (ParseException e) {

    date = getNowDate() ;

    }

    setDate(date) ;

    }

    public void setDate(Date date) {

    super.setText(preLabel getDefaultDateFormat().format(date));

    }

    public Date getDate() {

    String dateString = getText().substring(preLabel.length());

    try {

    return getDefaultDateFormat().parse(dateString);

    } catch (ParseException e) {

    return getNowDate() ;

    }

    }

    //覆盖父类的方法使之无效

    public void addActionListener(ActionListener listener ) {

    }

    private class DateChooser extends JPanel implements ActionListener ,ChangeListener {

    int startYear = 1980; //默认【最小】显示年份

    int lastYear = 2050; //默认【最大】显示年份

    int width = 200; //界面宽度

    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 monthSpin ;

    JSpinner hourSpin ;

    JButton[][] daysButton = new JButton[6][7] ;

    DateChooser() {

    setLayout(new BorderLayout());

    setBorder(new LineBorder(backGroundColor, 2));

    setBackground(backGroundColor);

    JPanel topYearAndMonth = createYearAndMonthPanal();

    add(topYearAndMonth,BorderLayout.NORTH);

    JPanel centerWeekAndDay = createWeekAndDayPanal();

    add(centerWeekAndDay,BorderLayout.CENTER);

    }

    private JPanel createYearAndMonthPanal(){

    Calendar c = getCalendar() ;

    int currentYear =c.get(Calendar.YEAR);

    int currentMonth =c.get(Calendar.MONTH) 1;

    int currentHour =c.get(Calendar.HOUR_OF_DAY);

    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);

    return result ;

    }

    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.RIGHT);

    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.RIGHT);

    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;

    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 ;

    }

    void showDateChooser(Point position ) {

    Frame owner =(Frame)SwingUtilities.getWindowAncestor(DateChooserJButton.this) ;

    if (dialog==null || dialog.getOwner()!= owner) dialog = createDialog(owner ) ;

    dialog.setLocation(getAppropriateLocation(owner ,position ) ) ;

    flushWeekAndDay() ;

    dialog.show();

    }

    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 ;

    }

    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 void dayColorUpdate(boolean isOldDay) {

    Calendar c = getCalendar() ;

    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() {

    Calendar c = getCalendar() ;

    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() ;

    Calendar c = getCalendar() ;

    if (source.getName().equals("Hour")) {

    c.set(Calendar.HOUR_OF_DAY, getSelectedHour());

    setDate(c.getTime());

    return ;

    }

    dayColorUpdate(true) ;

    if (source.getName().equals("Year"))

    c.set(Calendar.YEAR, getSelectedYear());

    else

    // (source.getName().equals("Month"))

    c.set(Calendar.MONTH, getSelectedMonth()-1);

    setDate(c.getTime());

    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());

    Calendar c = getCalendar() ;

    c.set(Calendar.DAY_OF_MONTH,newDay);

    setDate(c.getTime());

    }

    }

    }

    下载本文示例代码

    Java日期选择控件Java日期选择控件Java日期选择控件Java日期选择控件Java日期选择控件Java日期选择控件Java日期选择控件Java日期选择控件Java日期选择控件Java日期选择控件Java日期选择控件Java日期选择控件

    阅读(66) | 评论(0) | 转发(0) |

    展开全文
  • excel日期选择控件

    2017-04-26 14:12:03
    excel日期选择控件
  • swing 日期选择控件

    2019-05-05 15:37:53
    java swing DatePicker日期选择控件,包含库文件和资源文件。
  • 之前我们介绍过很多基于jQuery的日期选择控件和基于HTML5的日期选择控件,比如JavaScript日期选择控件Kalendae和HTML5/CSS3日历应用 华丽的日期选择器。这次要介绍的日期选择控件是基于Bootstrap风格的,可支持多种...
  • javascript日期选择控件

    2016-12-20 17:28:50
    javascript日期选择控件 支持移动端
  • 日期选择控件 AlertPickerView ,AlertPickerView 是一个 iOS 的日期选择控件
  • Android 日期选择控件

    2018-06-12 17:10:37
    一款支持上下滑动的日期选择控件,中间位置有两条线,在选择的日期后面,自动添加年月日文字。
  • 日期控件,自定义控件,日期选择控件,绝对好用 直接拖进去就能用
  • jquery 日期选择控件

    2013-12-23 14:17:49
    jquery 日期选择控件
  • iOS 日期选择控件 RMDateSelectionViewController ,RMDateSelectionViewController 是 iOS 的日期选择控件,在 UIAc...
  • 主要为大家详细介绍了Android自定义控件之日期选择控件的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 中文格式的日期选择控件,具体可以在js中自定义显示的语言 和日期格式
  • 内容索引:JAVA源码,系统相关,日历,日期选择 Java语言开发的简洁实用的日期选择控件,源码文件功能说明:  [DateChooser.java] Java 日期选择控件(主体类) [public]  [TablePanel.java] 日历表格面板  ...
  • 仿Mobiscroll移动端日期控件,jquery 移动端日期选择控件

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,273
精华内容 2,509
关键字:

日期选择控件