1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問(wèn)題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
      java實(shí)現(xiàn)自定義日期選擇器的方法實(shí)例

      前言

      為橋西等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及橋西網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為網(wǎng)站設(shè)計(jì)制作、網(wǎng)站建設(shè)、橋西網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專(zhuān)業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

      本文主要介紹的是利用java swing寫(xiě)的一個(gè)日期選擇器.,Swing 是一個(gè)為Java設(shè)計(jì)的GUI工具包,Swing是JAVA基礎(chǔ)類(lèi)的一部分,Swing包括了圖形用戶界面(GUI)器件如:文本框,按鈕,分隔窗格和表,下面話不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹吧。

      先上效果圖

      java實(shí)現(xiàn)自定義日期選擇器的方法實(shí)例

      代碼如下:

      package com.jianggujin;
      
      import java.awt.Color;
      import java.awt.GridLayout;
      import java.awt.event.ActionEvent;
      import java.awt.event.ActionListener;
      import java.awt.event.ItemEvent;
      import java.awt.event.ItemListener;
      import java.awt.event.MouseAdapter;
      import java.awt.event.MouseEvent;
      import java.text.SimpleDateFormat;
      import java.util.Calendar;
      import java.util.Date;
      
      import javax.swing.ImageIcon;
      import javax.swing.JButton;
      import javax.swing.JComboBox;
      import javax.swing.JDialog;
      import javax.swing.JLabel;
      import javax.swing.JPanel;
      import javax.swing.UIManager;
      
      /**
       * 日期選擇器控件
       * 
       * @author jianggujin
       * 
       */
      @SuppressWarnings("serial")
      public final class JDateChooser extends JDialog
      {
      
       // 定義相關(guān)參數(shù)
       /**
       * 年份
       */
       private int year = 0;
       /**
       * 月份
       */
       private int month = 0;
       /**
       * 天
       */
       private int date = 0;
      
       /**
       * 日期選擇背景色
       */
       private Color selectColor = Color.green;
       /**
       * 日期背景色
       */
       private Color dateColor = Color.white;
       /**
       * 日期鼠標(biāo)進(jìn)入背景色
       */
       private Color dateHoverColor = Color.lightGray;
       /**
       * 日期標(biāo)題背景色
       */
       private Color dateTitleColor = Color.gray;
       /**
       * 日期標(biāo)題字體顏色
       */
       private Color dateTitleFontColor = Color.black;
       /**
       * 日期字體顏色
       */
       private Color dateFontColor = Color.black;
      
       /**
       * 日期是否有效標(biāo)志
       */
       private boolean flag = false;
      
       /**
       * 最小年份
       */
       private int minYear = 1900;
       /**
       * 最大年份
       */
       private int maxYear = 2050;
      
       // 定義所需組件
       /**
       * 上一年
       */
       private JButton jbYearPre;
       /**
       * 下一年
       */
       private JButton jbYearNext;
       /**
       * 上一月
       */
       private JButton jbMonthPre;
       /**
       * 下一月
       */
       private JButton jbMonthNext;
       /**
       * 年份下拉選擇框
       */
       private JComboBox jcbYear;
       /**
       * 月份下拉選擇框
       */
       private JComboBox jcbMonth;
       /**
       * 天標(biāo)簽
       */
       private JLabel[][] jlDays;
       /**
       * 選擇
       */
       private JButton jbChoose;
       /**
       * 今日
       */
       private JButton jbToday;
       /**
       * 取消
       */
       private JButton jbCancel;
      
       /**
       * 程序主方法
       * 
       * @param args
       *   命令參數(shù)
       */
       public static void main(String[] args)
       {
        try
        {
         UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        }
        catch (Exception e)
        {
        }
        JDateChooser gg = new JDateChooser();
        gg.showDateChooser();
        System.out.println(gg.getDateFormat("yyyy-MM-dd"));
       }
      
       /**
       * 顯示對(duì)話框
       */
       public void showDateChooser()
       {
        setVisible(true);
       }
      
       /**
       * 關(guān)閉對(duì)話框
       */
       public void closeDateChooser()
       {
        this.dispose();
       }
      
       /**
       * 設(shè)置時(shí)間
       * 
       * @param year
       *   年份 1900-2050
       * @param month
       *   月份 1-12
       * @param date
       *   天
       */
       public void setDate(int year, int month, int date)
       {
        if (year >= minYear && year <= maxYear)
        {
         this.year = year;
        }
        else
        {
         return;
        }
        if (month >= 1 && month <= 12)
        {
         this.month = month;
        }
        else
        {
         return;
        }
        if (date > 0 && date <= getDaysInMonth(year, month))
        {
         this.date = date;
        }
        else
        {
         return;
        }
       }
      
       /**
       * 獲得用戶操作是否有效標(biāo)志
       * 
       * @return 事件是否有效
       */
       public boolean getFlag()
       {
        return flag;
       }
      
       /**
       * 構(gòu)造方法
       */
       public JDateChooser()
       {
        initComponent();
        initComponentData();
        addComponent();
        addListener();
        setDialogAttribute();
       }
      
       /**
       * 實(shí)例化組件
       */
       private void initComponent()
       {
        jbYearPre = new JButton();
        jbYearNext = new JButton();
        jbMonthPre = new JButton();
        jbMonthNext = new JButton();
        jcbYear = new JComboBox();
        jcbMonth = new JComboBox();
      
        jlDays = new JLabel[7][7];
      
        jbChoose = new JButton();
        jbToday = new JButton();
        jbCancel = new JButton();
       }
      
       /**
       * 初始化組件數(shù)據(jù)
       */
       private void initComponentData()
       {
        jbYearPre.setText("←");
        jbYearNext.setText("→");
        jbMonthPre.setText("↑");
        jbMonthNext.setText("↓");
        Calendar calendar = Calendar.getInstance();
        if (year != 0 && month != 0 && date != 0)
        {
         calendar.set(year, month - 1, date);
        }
        else
        {
         year = calendar.get(Calendar.YEAR);
         month = calendar.get(Calendar.MONTH) + 1;
         date = calendar.get(Calendar.DAY_OF_MONTH);
        }
        initYear();
        jcbYear.setSelectedItem(year + "年");
        for (int i = 1; i <= 12; i++)
        {
         jcbMonth.addItem(i + "月");
        }
        jcbMonth.setSelectedItem(month + "月");
        for (int i = 0; i < 7; i++)
        {
         JLabel temp = new JLabel();
         temp.setHorizontalAlignment(JLabel.CENTER);
         temp.setVerticalAlignment(JLabel.CENTER);
         temp.setOpaque(true);
         temp.setBackground(dateTitleColor);
         temp.setForeground(dateTitleFontColor);
         jlDays[0][i] = temp;
        }
        for (int i = 1; i < 7; i++)
        {
         for (int j = 0; j < 7; j++)
         {
         JLabel temp = new JLabel();
         temp.setHorizontalAlignment(JLabel.CENTER);
         temp.setVerticalAlignment(JLabel.CENTER);
         temp.setOpaque(true);
         temp.setForeground(dateFontColor);
         jlDays[i][j] = temp;
         }
        }
      
        String[] days = { "日", "一", "二", "三", "四", "五", "六" };
        for (int i = 0; i < 7; i++)
        {
         jlDays[0][i].setText(days[i]);
        }
      
        jbChoose.setText("選擇");
        jbToday.setText("今日");
        jbCancel.setText("取消");
      
        changeDate();
       }
      
       /**
       * 初始化顯示年份范圍
       */
       private void initYear()
       {
        jcbYear.removeAllItems();
        for (int i = minYear; i <= maxYear; i++)
        {
         jcbYear.addItem(i + "年");
        }
       }
      
       /**
       * 添加組件
       */
       private void addComponent()
       {
        // 添加背部組件
        JPanel north = new JPanel();
        north.add(jbYearPre);
        north.add(jbMonthPre);
        north.add(jcbYear);
        north.add(jcbMonth);
        north.add(jbMonthNext);
        north.add(jbYearNext);
        this.add(north, "North");
      
        // 添加中間組件
        JPanel center = new JPanel(new GridLayout(7, 7));
        for (int i = 0; i < 7; i++)
        {
         for (int j = 0; j < 7; j++)
         {
         center.add(jlDays[i][j]);
         }
        }
        this.add(center);
      
        // 添加南部組件
        JPanel jpSouth = new JPanel();
        jpSouth.add(jbChoose);
        jpSouth.add(jbToday);
        jpSouth.add(jbCancel);
        this.add(jpSouth, "South");
       }
      
       /**
       * 獲得指定年指定月份的天數(shù)
       * 
       * @param year
       *   年份
       * @param month
       *   月份
       * @return 天數(shù)
       */
       private int getDaysInMonth(int year, int month)
       {
        switch (month)
        {
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
         return 31;
        case 4:
        case 6:
        case 9:
        case 11:
         return 30;
        case 2:
         if (isLeapYear(year))
         {
         return 29;
         }
         return 28;
        default:
         return 0;
        }
       }
      
       /**
       * 清空日期
       */
       private void clearDate()
       {
        for (int i = 1; i < 7; i++)
        {
         for (int j = 0; j < 7; j++)
         {
         jlDays[i][j].setText("");
         }
        }
       }
      
       /**
       * 更改日期
       * 
       */
       private void changeDate()
       {
        refreshLabelColor();
        clearDate();
        Calendar calendar = Calendar.getInstance();
        calendar.set(year, month - 1, 1);
        int day_in_week = calendar.get(Calendar.DAY_OF_WEEK);
        int days = getDaysInMonth(year, month);
        if (date > days)
        {
         date = 1;
        }
        int temp = 0;
        for (int i = day_in_week - 1; i < 7; i++)
        {
         temp++;
         jlDays[1][i].setText(temp + "");
         if (temp == date)
         {
         jlDays[1][i].setBackground(selectColor);
         }
        }
        for (int i = 2; i < 7; i++)
        {
         for (int j = 0; j < 7; j++)
         {
         temp++;
         if (temp > days)
         {
          return;
         }
         jlDays[i][j].setText(temp + "");
         if (temp == date)
         {
          jlDays[i][j].setBackground(selectColor);
         }
         }
        }
       }
      
       /**
       * 添加監(jiān)聽(tīng)
       */
       private void addListener()
       {
        LabelMouseListener labelMouseListener = new LabelMouseListener();
        for (int i = 1; i < 7; i++)
        {
         for (int j = 0; j < 7; j++)
         {
         jlDays[i][j].addMouseListener(labelMouseListener);
         }
        }
        ButtonActionListener buttonActionListener = new ButtonActionListener();
        jbYearPre.addActionListener(buttonActionListener);
        jbYearNext.addActionListener(buttonActionListener);
        jbMonthPre.addActionListener(buttonActionListener);
        jbMonthNext.addActionListener(buttonActionListener);
        jbChoose.addActionListener(buttonActionListener);
        jbToday.addActionListener(buttonActionListener);
        jbCancel.addActionListener(buttonActionListener);
      
        ComboBoxItemListener comboBoxItemListener = new ComboBoxItemListener();
        jcbYear.addItemListener(comboBoxItemListener);
        jcbMonth.addItemListener(comboBoxItemListener);
       }
      
       /**
       * 解析年份或月份
       * 
       * @param yearOrMonth
       *   年份或月份字符串
       * @return 年份或月份
       */
       private int parseYearOrMonth(String yearOrMonth)
       {
        return Integer.parseInt(yearOrMonth.substring(0, yearOrMonth.length() - 1));
       }
      
       /**
       * 判斷是否為閏年
       * 
       * @param year
       *   年份
       * @return true 閏年
      * false 平年 */ private boolean isLeapYear(int year) { return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0); } /** * 設(shè)置對(duì)話框?qū)傩? */ private void setDialogAttribute() { this.setDefaultCloseOperation(DISPOSE_ON_CLOSE); this.setSize(400, 300); this.setLocationRelativeTo(null); // 顯示為模態(tài)對(duì)話框 this.setModal(true); this.setTitle("日期選擇器"); this.setIconImage((new ImageIcon(this.getClass().getResource("/calendar.png"))).getImage()); } /** * 刷新日期標(biāo)簽背景顏色 */ private void refreshLabelColor() { for (int i = 1; i < 7; i++) { for (int j = 0; j < 7; j++) { jlDays[i][j].setBackground(dateColor); } } } /** * 獲得顯示最小年份 * * @return 顯示最小年份 */ public int getMinYear() { return minYear; } /** * 獲得顯示最大年份 * * @return 顯示最大年份 */ public int getMaxYear() { return maxYear; } /** * 設(shè)置顯示最小年份和最大年份(1900-9999) * * @param minYear * 最小年份 * @param maxYear * 最大年份 */ public void setMinAndMaxYear(int minYear, int maxYear) { if (minYear > maxYear || minYear < 1900 || maxYear > 9999) { return; } this.minYear = minYear; this.maxYear = maxYear; initYear(); } /** * 獲得選中背景顏色 * * @return 選中背景顏色 */ public Color getSelectColor() { return selectColor; } /** * 設(shè)置選中背景顏色 * * @param selectColor * 選中背景顏色 */ public void setSelectColor(Color selectColor) { this.selectColor = selectColor; } /** * 獲得日期背景顏色 * * @return 日期背景顏色 */ public Color getDateColor() { return dateColor; } /** * 設(shè)置日期背景顏色 * * @param dateColor * 日期背景顏色 */ public void setDateColor(Color dateColor) { this.dateColor = dateColor; } /** * 獲得日期鼠標(biāo)進(jìn)入背景顏色 * * @return 日期鼠標(biāo)進(jìn)入背景顏色 */ public Color getDetaHoverColor() { return dateHoverColor; } /** * 設(shè)置日期鼠標(biāo)進(jìn)入背景顏色 * * @param dateHoverColor * 日期鼠標(biāo)進(jìn)入背景顏色 */ public void setDateHoverColor(Color dateHoverColor) { this.dateHoverColor = dateHoverColor; } /** * 獲得日期標(biāo)題背景顏色 * * @return 日期標(biāo)題背景顏色 */ public Color getDateTitleColor() { return dateTitleColor; } /** * 設(shè)置日期標(biāo)題背景顏色 * * @param dateTitleColor * 日期標(biāo)題背景顏色 */ public void setDateTitleColor(Color dateTitleColor) { this.dateTitleColor = dateTitleColor; } /** * 獲得日期標(biāo)題字體顏色 * * @return 日期標(biāo)題字體顏色 */ public Color getDateTitleFontColor() { return dateTitleFontColor; } /** * 設(shè)置日期標(biāo)題字體顏色 * * @param dateTitleFontColor * 日期標(biāo)題字體顏色 */ public void setDateTitleFontColor(Color dateTitleFontColor) { this.dateTitleFontColor = dateTitleFontColor; } /** * 獲得日期字體顏色 * * @return 日期字體顏色 */ public Color getDateFontColor() { return dateFontColor; } /** * 設(shè)置日期字體顏色 * * @param dateFontColor * 日期字體顏色 */ public void setDateFontColor(Color dateFontColor) { this.dateFontColor = dateFontColor; } /** * 獲得選擇年份 * * @return 選擇年份 */ public int getYear() { return year; } /** * 獲得選中月份 * * @return 選中月份 */ public int getMonth() { return month; } /** * 獲得選中天為當(dāng)月第幾天 * * @return 選中天為當(dāng)月第幾天 */ public int getDate() { return date; } /** * 獲得選中天為一周中第幾天 * * @return 選中天為一周中第幾天 */ public int getDayOfWeek() { return getCalendar().get(Calendar.DAY_OF_WEEK); } /** * 獲得選中天為一年中第幾天 * * @return 選中天為一年中第幾天 */ public int getDayOfYear() { return getCalendar().get(Calendar.DAY_OF_YEAR); } /** * 獲得日期對(duì)象 * * @return 日期對(duì)象 */ public Date getDateObject() { return getCalendar().getTime(); } /** * 獲得以指定規(guī)則格式化的日期字符串 * * @param format * 格式化規(guī)則 * @return 日期字符串 */ public String getDateFormat(String format) { return new SimpleDateFormat(format).format(getDateObject()); } /** * 獲得Calendar對(duì)象 * * @return Calendar對(duì)象 */ private Calendar getCalendar() { Calendar calendar = Calendar.getInstance(); calendar.set(year, month - 1, date); return calendar; } /** * 標(biāo)簽鼠標(biāo)監(jiān)聽(tīng) * * @author jianggujin * */ final class LabelMouseListener extends MouseAdapter { @Override public void mouseClicked(MouseEvent e) { JLabel temp = (JLabel) e.getSource(); if (!temp.getText().equals("")) { int date = Integer.parseInt(temp.getText()); { if (date != JDateChooser.this.date) { JDateChooser.this.date = date; refreshLabelColor(); temp.setBackground(selectColor); } } } } @Override public void mouseEntered(MouseEvent e) { JLabel temp = (JLabel) e.getSource(); if (!temp.getText().equals("")) { temp.setBackground(dateHoverColor); } } @Override public void mouseExited(MouseEvent e) { JLabel temp = (JLabel) e.getSource(); if (!temp.getText().equals("")) { if (Integer.parseInt(temp.getText()) != date) { temp.setBackground(dateColor); } else { temp.setBackground(selectColor); } } } } /** * 按鈕動(dòng)作監(jiān)聽(tīng) * * @author jianggujin * */ final class ButtonActionListener implements ActionListener { public void actionPerformed(ActionEvent e) { if (e.getSource() == jbYearPre) { int select = jcbYear.getSelectedIndex(); if (select > 0) { jcbYear.setSelectedIndex(select - 1); } } else if (e.getSource() == jbYearNext) { int select = jcbYear.getSelectedIndex(); if (select < jcbYear.getItemCount() - 1) { jcbYear.setSelectedIndex(select + 1); } } else if (e.getSource() == jbMonthPre) { int select = jcbMonth.getSelectedIndex(); if (select > 0) { jcbMonth.setSelectedIndex(select - 1); } } else if (e.getSource() == jbMonthNext) { int select = jcbMonth.getSelectedIndex(); if (select < jcbMonth.getItemCount() - 1) { jcbMonth.setSelectedIndex(select + 1); } } else if (e.getSource() == jbChoose) { flag = true; closeDateChooser(); } else if (e.getSource() == jbToday) { flag = true; Calendar calendar = Calendar.getInstance(); year = calendar.get(Calendar.YEAR); month = calendar.get(Calendar.MONTH) + 1; date = calendar.get(Calendar.DATE); closeDateChooser(); } else if (e.getSource() == jbCancel) { flag = false; closeDateChooser(); } } } /** * 下拉選擇框項(xiàng)改變監(jiān)聽(tīng) * * @author jianggujin * */ final class ComboBoxItemListener implements ItemListener { public void itemStateChanged(ItemEvent e) { if (e.getSource() == jcbYear) { int year = parseYearOrMonth(jcbYear.getSelectedItem().toString()); if (year != JDateChooser.this.year) { JDateChooser.this.year = year; changeDate(); } } else if (e.getSource() == jcbMonth) { int month = parseYearOrMonth(jcbMonth.getSelectedItem().toString()); if (month != JDateChooser.this.month) { JDateChooser.this.month = month; changeDate(); } } } } }

      總結(jié)

      以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)創(chuàng)新互聯(lián)的支持。


      名稱(chēng)欄目:java實(shí)現(xiàn)自定義日期選擇器的方法實(shí)例
      標(biāo)題來(lái)源:http://ef60e0e.cn/article/ghhgoj.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        普格县| 广南县| 勐海县| 虹口区| 论坛| 南平市| 宁海县| 翼城县| 吐鲁番市| 商河县| 宝丰县| 淮滨县| 庆安县| 鄂尔多斯市| 郁南县| 桓仁| 浪卡子县| 开平市| 措勤县| 河东区| 裕民县| 共和县| 赣州市| 鸡泽县| 甘孜县| 青铜峡市| 开平市| 安义县| 金阳县| 监利县| 九江县| 峡江县| 阆中市| 仙桃市| 罗江县| 左权县| 蓝田县| 孟连| 奉化市| 垣曲县| 肇庆市|