来试试我的程序import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import com.borland.jbcl.control.*;
import java.util.Calendar ;
import jclass.bwt.* ;
import javax.swing.table.*;public class Date_eq extends JDialog {
  JPanel panel1 = new JPanel();
  JPanel panel2 = new JPanel();
  Border border1;
  JTextField bm = new JTextField();    GroupBox groupBox1 = new GroupBox();
    BorderLayout borderLayout1 = new BorderLayout();
    GridLayout gridLayout2 = new GridLayout();
    JPanel jPanel2 = new JPanel();
    BorderLayout borderLayout2 = new BorderLayout();
    JPanel jPanel3 = new JPanel();
    JPanel jPanel4 = new JPanel();
    JComboBox month = new JComboBox();
    FlowLayout flowLayout1 = new FlowLayout();
    FlowLayout flowLayout2 = new FlowLayout();
    JPanel jPanel5 = new JPanel();
    JScrollPane jScrollPane1 = new JScrollPane();
    GridLayout gridLayout3 = new GridLayout();
    
    Date_JTable jTable_date = new Date_JTable();
    JCSpinBox year = new JCSpinBox();
    String[] days = new String[42];
    String[][] day = new String[6][7];
    Calendar thisMonth = Calendar.getInstance();
    String[] week = new String[7];
    String[][] Data = new String[6][7];
    int int_height = 0;
    int intYear = 0 , intMonth = 0 , intDay = 0 ;
    boolean flag = false;
    String strSelectText = "" ;//    public boolean result = false ;
    public int result ;
    public String date = null;
    GridLayout gridLayout1 = new GridLayout();
    JPanel jPanel1 = new JPanel();
    public JLabel jLabel1 = new JLabel();
    
  public Date_eq(Frame frame, String title, boolean modal , String strSelectText ) {
    super(frame, title, modal);
    try {
      if(!(String.valueOf (strSelectText).equals ("null")))        
        this.strSelectText = strSelectText ;
      jbInit();
    }
    catch (Exception e) {
      JOptionPane.showMessageDialog ( this , e.getMessage () , "ERRor" , JOptionPane.ERROR_MESSAGE ) ;
      e.printStackTrace();
    }    pack();
  }  public Date_eq(Frame frame, String title, boolean modal) {
    this(frame, title, modal, ""); 
  }  public Date_eq(Frame frame) {
    this(frame, "", false , "" );
  }  private void jbInit() throws Exception {
        week[0] = "星期日";
        week[1] = "星期一";
        week[2] = "星期二";
        week[3] = "星期三";
        week[4] = "星期四";
        week[5] = "星期五";
        week[6] = "星期六";
        System.out.println("2001-01-01");
        for (int i = 0 ;  i < 42 ;  i++){
           int x = i/7;
           int y = i - (x)*7;
           day[x][y] = "";
        }
        
    border1 = BorderFactory.createRaisedBevelBorder();
    panel2.setBorder(BorderFactory.createLineBorder(Color.black));
        panel2.setLayout(gridLayout2);
    this.addWindowListener(new Date_eq_this_windowAdapter(this));
    panel1.setLayout(gridLayout1);
        groupBox1.setLayout(borderLayout1);
        jPanel2.setLayout(borderLayout2);
        jPanel4.setLayout(flowLayout1);
        flowLayout1.setVgap(2);
        jPanel3.setLayout(flowLayout2);
        flowLayout2.setVgap(0);
        month.setPreferredSize(new Dimension(78, 24));
        month.addItemListener(new java.awt.event.ItemListener() {            public void itemStateChanged(ItemEvent e) {
                month_itemStateChanged(e);
            }
        });
        jPanel5.setLayout(gridLayout3);
        gridLayout3.setVgap(2);
        //bm.setPreferredSize(new Dimension(100, 30));
        year.setPreferredSize(new Dimension(56, 26));
        year.setInsets(new java.awt.Insets(0,0,0,12));
        year.setMinimumSize(new Dimension(20, 10));
        year.setColumns(3);
        year.setHighlightThickness(0);
        year.setMaximum(2100);
        year.setMaximumLength(2100);
        year.setMinimum(1900);
        year.setText("2000");
        year.addTextListener(new jclass.bwt.JCTextAdapter() {            public void textValueChangeEnd(JCTextEvent e) {
                year_textValueChangeEnd(e);
            }
        });
        year.addMouseListener(new java.awt.event.MouseAdapter() {            public void mouseReleased(MouseEvent e) {
                year_mouseReleased(e);
            }        });
        year.addKeyListener(new java.awt.event.KeyAdapter() {            public void keyReleased(KeyEvent e) {
                year_keyReleased(e);
            }
        });
        bm.setHorizontalAlignment(SwingConstants.CENTER);
        jTable_date.addMouseListener(new java.awt.event.MouseAdapter() {            public void mouseClicked(MouseEvent e) {
                jTable_date_mouseClicked(e);
            }
        });        groupBox1.addComponentListener(new java.awt.event.ComponentAdapter() {            public void componentResized(ComponentEvent e) {
                groupBox1_componentResized(e);
            }
        });
        panel1.setMinimumSize(new Dimension(330, 200));
        panel1.setPreferredSize(new Dimension(330, 200));
        panel1.add(panel2, null);
        panel2.add(groupBox1, null);
        groupBox1.add(jPanel2, BorderLayout.NORTH);
        jPanel2.add(jPanel3, BorderLayout.WEST);
        jPanel3.add(year, null);
        //jPanel3.add(bm, null);
        jPanel2.add(jPanel4, BorderLayout.EAST);
        jPanel4.add(month, null);
        jPanel2.add(jPanel1, BorderLayout.CENTER);
        jPanel1.add(jLabel1, null);
        groupBox1.add(jPanel5, BorderLayout.CENTER);
        jPanel5.add(jScrollPane1, null);
        jScrollPane1.getViewport().add(jTable_date, null);
        getContentPane().add(panel1);        String strYear = "" , strMonth = "" , strDay = "" ;
        if ( ! strSelectText.equals ( "" ) ) {
           int intMark = 0 ;
           String str = "" ;
           for ( int i = 0 ; i < strSelectText.length () ; i++ ) {
             str = strSelectText.substring ( i , i + 1 ) ;
             if ( str.equals ( "-" ) ) {
                intMark = i ;
                break ;
             }  
             strYear = strYear + str ;
           }           for ( int i = intMark + 1 ; i < strSelectText.length () ; i++ ) {
             str = strSelectText.substring ( i , i + 1 ) ;
             if ( str.equals ( "-" ) ) {
                intMark = i ;
                break ;
             }  
             strMonth = strMonth + str ;
           }           strDay = strSelectText.substring ( intMark + 1 , strSelectText.length () ) ;
           intYear = Integer.parseInt ( strYear ) ;
           intMonth = Integer.parseInt ( strMonth ) ;
           intDay = Integer.parseInt ( strDay ) ;
        }
        else {
           java.util.Date dt = new java.util.Date() ;
       intYear = dt.getYear () + 1900 ;
       intMonth = dt.getMonth () + 1 ;
       intDay = dt.getDate () ;
        }
    
        year.setPreferredSize (60,24);
        year.setIntValue( intYear );
        month.addItem ("一月");
        month.addItem ("二月");
        month.addItem ("三月");
        month.addItem ("四月");
        month.addItem ("五月");
        month.addItem ("六月");
        month.addItem ("七月");
        month.addItem ("八月");
        month.addItem ("九月");
        month.addItem ("十月");
        month.addItem ("十一月");
        month.addItem ("十二月");        month.setSelectedIndex ( intMonth - 1 );        int intRows = jTable_date.getRowCount () ;
        int intCols = jTable_date.getColumnCount () ;
        for ( int i = 0 ; i < intRows ; i++ ) {
          for ( int j = 0 ; j < intCols ; j++ ) {
            if ( ! jTable_date.getValueAt ( i , j ).equals ( "" ) && jTable_date.getValueAt ( i , j ) != null ) {
               int intNDay = Integer.parseInt ( (String) jTable_date.getValueAt ( i , j ) ) ;
               if ( intNDay == intDay ) {
                  jTable_date.setRowSelectionInterval ( i , i ); 
                  jTable_date.setColumnSelectionInterval ( j , j ); 
               }
            }
          }
        }
        jLabel1.setText ( String.valueOf ( intYear ).trim () + "-" + String.valueOf ( intMonth ).trim () + "-" + String.valueOf ( intDay ).trim ()  ) ;
   }  // OK
  void button1_actionPerformed(ActionEvent e) {
    dispose();
  }  // Cancel
  void button2_actionPerformed(ActionEvent e) {
    dispose();
  }  void this_windowClosing(WindowEvent e) {
    dispose();
  }    void set_day() {
        for (int i=0; i<42; i++) {
          days[i] = "";
        }        String str_year = year.getText ().trim ();
        if(month!=null&&(!month.equals("null")))
            thisMonth.set(Calendar.MONTH, month.getSelectedIndex ());
        if(year!=null&&(!year.equals("null")))
            thisMonth.set(Calendar.YEAR, Integer.parseInt(str_year) );
        str_year=String.valueOf(thisMonth.get(Calendar.YEAR));
        String str_month=String.valueOf(thisMonth.get(Calendar.MONTH));
        thisMonth.setFirstDayOfWeek(Calendar.SUNDAY);
        thisMonth.set(Calendar.DAY_OF_MONTH,1);
        int firstIndex=thisMonth.get(Calendar.DAY_OF_WEEK)-1;
        int maxIndex=thisMonth.getActualMaximum(Calendar.DAY_OF_MONTH);
        for(int i=0;i<maxIndex;i++) {
            days[firstIndex+i]=String.valueOf(i+1);
        }
        for (int i=0; i<42; i++){
           int x = i/7;
           int y = i - (x)*7;
           day[x][y] = days[i];
        }        int t = 0;
        if (!flag) {
          jTable_date = new Date_JTable(day, week);
          flag = true;
        }
        //int height = jTable_height/7;
        //this.set_height ();
        this.add_listener ();
        jTable_date.getTableHeader ().setReorderingAllowed (false);
        DefaultTableCellRenderer render = new DefaultTableCellRenderer();
        render.setHorizontalAlignment(JLabel.CENTER);
        for (int i=0; i<7; i++)
          jTable_date.getColumn (week[i]).setCellRenderer(render);
        jTable_date.setRowSelectionAllowed( false );
        jTable_date.setCellSelectionEnabled(true);
        jTable_date.getSelectionModel().setSelectionMode (ListSelectionModel.SINGLE_SELECTION);
        jScrollPane1.getViewport().add(jTable_date, null);
        try {
          jTable_date.setRowHeight (int_height);
          this.set_label ();
        } catch (Exception sqle) {  }
    }    void month_itemStateChanged(ItemEvent e) {
       this.set_day ();
    }    void year_keyReleased(KeyEvent e) {
        this.set_day ();
    }    void year_mouseReleased(MouseEvent e) {
        this.set_day ();
    }    void year_textValueChangeEnd(JCTextEvent e) {
       this.set_day ();
    }
    
    
    void jTable_date_mouseClicked(MouseEvent e) {
        String str_month = String.valueOf(month.getSelectedIndex()+1);
        if (str_month.length ()==1)
          str_month = "0"+str_month;
        String str_date = jTable_date.getValueAt(jTable_date.getSelectedRow(),jTable_date.getSelectedColumn()).toString();
        if (str_date.length ()==1)
          str_date = "0"+str_date;
          
        if(e.getClickCount() == 2){
            String tmp = jTable_date.getValueAt(jTable_date.getSelectedRow(),jTable_date.getSelectedColumn()).toString();
            System.out.println(tmp);
            if(tmp.trim().equals("")){
            }else{
//                result  =  true ;
                result  =  1 ;
                date = year.getText().trim()+"-"+str_month+"-"+str_date;
                jLabel1.setText (date);
                dispose();
            }        }
        if(e.getClickCount() == 1){
            
            String tmp = jTable_date.getValueAt(jTable_date.getSelectedRow(),jTable_date.getSelectedColumn()).toString();
            System.out.println(tmp);
            if(tmp.trim().equals("")){
               jLabel1.setText ("");
            }else{
                date = year.getText().trim()+"-"+str_month+"-"+str_date;
                jLabel1.setText (date);
            }        }
    }    void set_label() {
        String str_month = String.valueOf(month.getSelectedIndex()+1);
        if (str_month.length ()==1)
          str_month = "0"+str_month;
        String str_date = jTable_date.getValueAt(jTable_date.getSelectedRow(),jTable_date.getSelectedColumn()).toString();
        if (str_date.length ()==1)
          str_date = "0"+str_date;
            String tmp = jTable_date.getValueAt(jTable_date.getSelectedRow(),jTable_date.getSelectedColumn()).toString();
            System.out.println(tmp);
            if(tmp.trim().equals("")){
               jLabel1.setText ("");
            }else{
                date = year.getText().trim()+"-"+str_month+"-"+str_date;
                jLabel1.setText (date);
            }
    }    void add_listener() {
        jTable_date.addMouseListener(new java.awt.event.MouseAdapter() {            public void mouseClicked(MouseEvent e) {
                jTable_date_mouseClicked(e);
            }
        });
        jTable_date.getTableHeader().addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
                int i = jTable_date.getTableHeader().columnAtPoint(new Point(e.getX(),0));
                System.out.println("header clicked !"+ String.valueOf(i));
             }
            });
    }    void groupBox1_componentResized(ComponentEvent e) {
       this.set_height ();
     }     void set_height() {
        double jTable_height = jScrollPane1.getSize().getHeight();
        //int height = jTable_height/7;
        System.out.println (jTable_height);        int height = (int) ((jTable_height- jTable_date.getTableHeader ().getHeight ()-4)/6);
        int_height = height;
        jTable_date.setRowHeight (height);    }    public String getTodayDate() {
      java.util.Date dt=new java.util.Date() ;
  int intTYear= dt.getYear () ;
  int intTMonth=dt.getMonth () ;
  int intTDay=dt.getDate () ;
   return (String.valueOf (intTYear+1900)+"-"+String.valueOf (intTMonth+1)+"-"+String.valueOf (intTDay));
    } }class Date_eq_this_windowAdapter extends WindowAdapter {
  Date_eq adaptee;  Date_eq_this_windowAdapter(Date_eq adaptee) {
    this.adaptee = adaptee;
  }  public void windowClosing(WindowEvent e) {
    adaptee.this_windowClosing(e);
  }
}class Date_JTable extends JTable {
   public Date_JTable(Object[][] a, Object[] b) {
     super(a,b);
   }   public Date_JTable() {
     super();
   }    public boolean isCellEditable(int parm1, int parm2) {
        //TODO: override this javax.swing.JTable method;
        return false;
    }
//   public
}