<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);// 設(shè)置日期為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 }, };
     }
    }

    調(diào)用方法:

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

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


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


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

    導(dǎo)航

    統(tǒng)計

    常用鏈接

    留言簿(1)

    隨筆檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 毛片免费视频观看| 亚洲欧美日韩自偷自拍| aa在线免费观看| 免费在线观看中文字幕| 国产精品亚洲综合天堂夜夜| 午夜色a大片在线观看免费| 亚洲日本人成中文字幕| 久久久久国色AV免费观看性色 | 一级特黄a大片免费| 国产免费牲交视频| 日韩免费高清一级毛片| 亚洲国模精品一区| 成人免费777777被爆出| 亚洲国产精品久久久久网站 | 青青青国产在线观看免费网站| 亚洲嫩草影院久久精品| 最近免费视频中文字幕大全| 亚洲午夜一区二区电影院| 成年18网站免费视频网站| 黄色三级三级三级免费看| 亚洲日本中文字幕天堂网| 西西人体免费视频| 久久精品国产亚洲AV无码娇色| 日本人的色道免费网站| 亚洲国产精华液2020| 亚洲午夜日韩高清一区| 久久久久久影院久久久久免费精品国产小说 | 国产亚洲精品欧洲在线观看| 国产亚洲大尺度无码无码专线| 久久狠狠躁免费观看2020| 亚洲大香伊人蕉在人依线| 国产美女精品视频免费观看 | 亚洲精品视频免费看| 亚洲色一区二区三区四区| 亚洲午夜福利精品久久| 91在线手机精品免费观看| 色综合久久精品亚洲国产| 亚洲国产另类久久久精品黑人 | 美女被免费视频网站a国产| 久久一区二区免费播放| 国产成人精品日本亚洲直接|