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

    隨筆檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 0588影视手机免费看片| 三级片免费观看久久| 99久久精品国产免费| 亚洲日韩中文字幕在线播放| 四虎一区二区成人免费影院网址| 四虎免费在线观看| 久久无码av亚洲精品色午夜| 色视频色露露永久免费观看 | 国产精品二区三区免费播放心| 亚洲中文字幕无码av| 色播在线永久免费视频| 亚洲Av永久无码精品一区二区| 国产伦精品一区二区三区免费下载 | 一本色道久久88亚洲精品综合| 在线免费观看视频你懂的| 亚洲欧美日韩一区二区三区在线| 日韩毛片无码永久免费看| 美女羞羞视频免费网站| 亚洲夜夜欢A∨一区二区三区| 青柠影视在线观看免费| 亚洲精品国产成人中文| 成人免费视频一区二区三区| 国产精品亚洲综合| 国产亚洲一区二区三区在线| 精品久久8x国产免费观看| 亚洲午夜在线播放| 亚洲成av人片在线观看天堂无码 | 最近免费2019中文字幕大全| 国产亚洲sss在线播放| 美女被免费视频网站a国产| yellow视频免费看| 99久久亚洲精品无码毛片| 成人午夜免费福利| 国产精品无码免费专区午夜 | 成全视频在线观看免费高清动漫视频下载 | 亚洲欧洲精品成人久久曰影片| 中文毛片无遮挡高清免费| 亚洲成人动漫在线观看| 免费在线观看毛片| 99热这里只有精品6免费| 亚洲欧美成人av在线观看|