<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    yerenzyy

    很不錯的代碼(在Java JTable窗體上添加日歷)

    以JTable窗體形式選擇日期。

    import java.awt.Color;
    import java.awt.Component;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import java.util.Calendar;
    import javax.swing.BorderFactory;
    import javax.swing.ComboBoxModel;
    import javax.swing.DefaultComboBoxModel;
    import javax.swing.JComboBox;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JOptionPane;
    import javax.swing.JScrollPane;
    import javax.swing.JSpinner;
    import javax.swing.JTable;
    import javax.swing.JTextField;
    import javax.swing.ListSelectionModel;
    import javax.swing.SpinnerNumberModel;
    import javax.swing.border.BevelBorder;
    import javax.swing.event.ChangeEvent;
    import javax.swing.event.ChangeListener;
    import javax.swing.table.DefaultTableModel;
    import javax.swing.table.TableCellRenderer;
    import javax.swing.table.TableModel;

    public class CaDialog extends javax.swing.JDialog {

     private int row;
     private int column;
     private JTextField jtf;
     public String day = null;
     private JSpinner yearSpinner;
     private JTable dadeTable;
     private JScrollPane jScrollPane1;
     private JComboBox monthComboBox;
     Calendar time = Calendar.getInstance();// 實例化一個日歷類對象
     Object[][] data = new Object[6][7];
     String[] head = { "日", "一", "二", "三", "四", "五", "六" };

     public static void main(String[] args) {
      JFrame frame = new JFrame();
      CaDialog inst = new CaDialog(frame);
      inst.setVisible(true);
     }
     
     public CaDialog(JFrame frame) {
      super(frame);
      initGUI();
     }
     
     public CaDialog(JTextField jtf) {
      super();
      this.jtf=jtf;
      initGUI();
     }
     
     private void initGUI() {
      try {
       {
        getContentPane().setLayout(null);
        this.setModal(true);
       }
       this.setSize(253, 202);
       {
        ComboBoxModel jComboBox1Model = new DefaultComboBoxModel(
         new String[] { "一月", "二月", "三月", "四月", "五月", "六月","七月",
           "八月", "九月", "十月", "十一月", "十二月" });
        monthComboBox = new JComboBox();
        getContentPane().add(monthComboBox);
        monthComboBox.setModel(jComboBox1Model);
        monthComboBox.setSelectedIndex(Calendar.getInstance().get(
          Calendar.MONTH));
        monthComboBox.setBounds(10, 5, 105, 21);
        monthComboBox.setMaximumRowCount(4);
        monthComboBox.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent evt) {
          monthComboBoxActionPerformed(evt);
         }
        });
       }
       {
        SpinnerNumberModel yearSpinnerModel = new SpinnerNumberModel(1983,1950,2099,1);
        yearSpinner = new JSpinner(yearSpinnerModel);
        yearSpinner.setValue(Calendar.getInstance().get(
          Calendar.YEAR));
        JSpinner.NumberEditor editor = new JSpinner.NumberEditor(
          yearSpinner, "###");
        yearSpinner.setEditor(editor);
        this.add(yearSpinner);
        getContentPane().add(yearSpinner);
        yearSpinner.setModel(yearSpinnerModel);
        yearSpinner.setBounds(127, 5, 105, 21);
        yearSpinner.addChangeListener(new ChangeListener() {
         public void stateChanged(ChangeEvent evt) {
          yearSpinnerStateChanged(evt);
         }
        });
       }
       {
        jScrollPane1 = new JScrollPane();
        getContentPane().add(jScrollPane1);
        jScrollPane1.setBounds(9, 37, 224, 117);
        {
         this.in();
         TableModel jTable1Model = new DefaultTableModel(data, head)
         {public boolean isCellEditable(int row, int column)
         {return false;}
        };;
         dadeTable = new JTable(jTable1Model);
         dadeTable.getTableHeader().setReorderingAllowed(false);
         dadeTable.getTableHeader().setResizingAllowed(false);
         jScrollPane1.setViewportView(dadeTable);
         dadeTable.setCellSelectionEnabled(true);
         dadeTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);     
         dadeTable.getTableHeader().setEnabled(false);
         dadeTable.setGridColor(Color.WHITE);
         dadeTable.setDefaultRenderer(Object.class, new TableCellRenderer(){
    //      @Override
          public Component getTableCellRendererComponent(
            JTable table, Object value, boolean isSelected,
            boolean hasFocus, int r, int c) {
           // TODO Auto-generated method stub
           JLabel cell = new JLabel(value==null?"":String.valueOf(value),0);
           cell.setOpaque(true);
           if(isSelected&&dadeTable.getValueAt(r,c)!=null){
            cell.setBackground(Color.GRAY);
           }
           if(r==row&&c==column){
            cell.setBorder(BorderFactory.createEtchedBorder(BevelBorder.LOWERED));
           }
           return cell;
          }
         });
         dadeTable.addMouseListener(new MouseAdapter() {
          public void mouseClicked(MouseEvent evt) {
           dateTableMouseClicked(evt);
          }
         });
        }
       }
      } catch (Exception e) {
       e.printStackTrace();
      }
     }

     private void dateTableMouseClicked(MouseEvent evt) {
      try{
      String date = String.valueOf(dadeTable.getValueAt(dadeTable
        .getSelectedRow(), dadeTable.getSelectedColumn()));
      if (date.equals("null")) {
       JOptionPane.showMessageDialog(this, "請選擇日期!");
       return;
      }
      if (evt.getClickCount() == 2) {
       String year = yearSpinner.getValue().toString();
       int month = monthComboBox.getSelectedIndex() + 1;
       day = year + "-" + (String.valueOf(month).length()==1?"0"+month:month) + "-" + (String.valueOf(date).length()==1?"0"+date:date);
       this.jtf.setText(day);
       this.dispose();
      }
      }catch(Exception e){}
     }

     private void monthComboBoxActionPerformed(ActionEvent evt) {
      time.set(Calendar.MONTH, monthComboBox.getSelectedIndex());
      data = (Object[][]) this.clear();
      this.in();
      TableModel dateTableModel = new DefaultTableModel(data, head)
      {public boolean isCellEditable(int row, int column)
       {return false;}
      };
      dadeTable.setModel(dateTableModel);
     }

     private void yearSpinnerStateChanged(ChangeEvent evt) {
      time.set(Calendar.YEAR, Integer.parseInt(String.valueOf(yearSpinner
        .getValue())));
      data = (Object[][]) this.clear();
      this.in();
      TableModel dateTableModel = new DefaultTableModel(data, head)
      {public boolean isCellEditable(int row, int column)
       {return false;}
      };
      dadeTable.setModel(dateTableModel);
     }
     
     public void in() {
      int today = Calendar.getInstance().get(Calendar.DATE);
      time.set(Calendar.DATE, 1);// 設置日期為1號
      int w = time.get(Calendar.DAY_OF_WEEK) - 1;// 得一號星期幾
      time.add(Calendar.MONTH, 1); // 月份+1
      time.add(Calendar.DAY_OF_MONTH, -1);// 退一天
      int day = time.get(Calendar.DATE);// 得到本月最后一天,本月天數(shù)
      int c = 0;
      for (int i = 1; i <= day; i++) {
       if ((i + w) % 7 == 0) {
        c = (int) (i + w) / 7 - 1;
       } else {
        c = (int) (i + w) / 7;
       }
       data[c][(w + i - 1) % 7] = i;
       if (i == today) {
        row=c;
        column=(w+i-1)%7;
       }
      }
     }
     
     public Object clear() {
      return new Object[][] { { null, null, null, null, null, null, null },
        { null, null, null, null, null, null, null },
        { null, null, null, null, null, null, null },
        { null, null, null, null, null, null, null },
        { null, null, null, null, null, null, null },
        { null, null, null, null, null, null, null }, };
     }
    }

    調用方法:

    CaDialog cai = new CaDialog(this.birthdayTextField1);
      cai.setVisible(true);
      cai.toFront();

    posted on 2008-09-25 11:52 冶人 閱讀(1489) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導航:
     
    <2008年9月>
    31123456
    78910111213
    14151617181920
    21222324252627
    2829301234
    567891011

    導航

    統(tǒng)計

    常用鏈接

    留言簿(1)

    隨筆檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲另类激情专区小说图片| 国产在线a不卡免费视频| 99热在线精品免费全部my| 成人a视频片在线观看免费| 国产精品无码一二区免费| 久久久久亚洲AV成人网人人网站| 久久精品夜色国产亚洲av| 亚洲乱码无限2021芒果| 精品亚洲成a人在线观看| 中文无码日韩欧免费视频| 久久午夜夜伦鲁鲁片免费无码影视| 成年女人色毛片免费看| 亚洲av无码成人精品区在线播放| 亚洲av永久无码精品国产精品| 亚洲人配人种jizz| 一级毛片免费全部播放| 69影院毛片免费观看视频在线 | 美女视频黄a视频全免费| 国产精品免费看香蕉| 亚洲成AV人片在线观看无码 | 中文无码亚洲精品字幕| 日韩免费高清一级毛片| 91成人在线免费观看| 日韩免费观看一级毛片看看| 亚洲码国产精品高潮在线| 亚洲五月综合缴情婷婷| 国产性生大片免费观看性| 国产1000部成人免费视频| 亚洲国产综合无码一区二区二三区| 亚洲午夜精品一区二区| 毛片亚洲AV无码精品国产午夜| 久久国产精品2020免费m3u8| 永久免费毛片手机版在线看| 亚洲av最新在线网址| 青草青草视频2免费观看| 99精品视频在线免费观看| 全亚洲最新黄色特级网站| 亚洲日产2021三区在线 | 亚洲av无码专区在线观看亚| 久久免费国产精品一区二区| 波多野结衣免费视频观看|