解决方案 »

  1.   

    我曾经写了一个,不过在我家中电脑上,如果到5.1还需要的话,可以发给你.
    保证能用.([email protected])
      

  2.   

    我也要一份,[email protected],谢谢
      

  3.   

    我也要
    [email protected]
    谢谢
      

  4.   

    应该可以通过mouse事件促发,来new一个新窗体!然后在隐藏!
      

  5.   

    qljsd (我本善良) :
    如果我给你的那个控件好用的话,请加分吧!
      

  6.   

    me也想要一份!mail:[email protected]
      

  7.   

    控件我找到了,不用等到51了.
    上面的我都发了,没收到的,给我来个mail.
      

  8.   

    nil2000,也给我一份,谢谢。[email protected]
      

  9.   

    试试这个,package untitled1;import java.awt.*;
    import java.awt.event.*;
    import javax.swing.table.*;
    import java.util.Calendar;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.GregorianCalendar;
    import javax.swing.*;
    import com.borland.jbcl.layout.*;
    import java.beans.*;
    import javax.swing.border.*;
    import javax.swing.event.*;public class GUICalendarDLG extends JDialog implements Runnable{
      private GregorianCalendar calendar=new GregorianCalendar();//日期
      private int intYear=2000;//年
      private int intMonth=1;//月
      private int intDay=1;//日
      private String FinalyDate="";//输出的日期字符窜
      private boolean isRun=true;//是否在运行
      //构造一个不可编辑的表模型
      private DefaultTableModel model=new DefaultTableModel(new Object[6][7],new Object[]{"日","一","二","三",
                              "四","五","六"}){    public boolean isCellEditable(int row,int column){
          return false;
        }
      };
      private TitledBorder titledBorder1;
      private JPanel jPanel1 = new JPanel();
      private JPanel panel2 = new JPanel();
      private JComboBox MonthChoice = new JComboBox();//月份选择
      private JLabel label3 = new JLabel();
      private JLabel label2 = new JLabel();
      private JScrollBar YearScrollbar = new JScrollBar();
      private JTable table = new JTable(model){//日期    public TableCellRenderer getCellRenderer(int row,int column){
          return new DefaultTableCellRenderer(){
            public Component getTableCellRendererComponent(JTable table,
                                                   Object value,
                                                   boolean isSelected,
                                                   boolean hasFocus,
                                                   int row,
                                                   int column){
              JLabel label=null;
              if(value!=null){
                label = new JLabel(value.toString(),JLabel.CENTER);
                label.setOpaque(true);
                label.setFont(table.getFont());
                if(isSelected){
                  label.setForeground(Color.white);
                  label.setBackground(Color.blue);
                  label.setBorder(BorderFactory.createLineBorder(Color.yellow));
                }else{
                  label.setForeground(Color.black);
                  label.setBackground(Color.white);
                }
              }
             return label;
            }
          };
        }
      };
      private JScrollPane jScrollPane1 = new JScrollPane(table);
      private JPanel jPanel2 = new JPanel();
      private JLabel TimeLabel = new JLabel();
      private BorderLayout borderLayout2 = new BorderLayout();
      private BorderLayout borderLayout3 = new BorderLayout();
      private BorderLayout borderLayout1 = new BorderLayout();
      private XYLayout xYLayout1 = new XYLayout();
      private JTextField YearTextField = new JTextField();//年
      private boolean isConfirm=false;  public GUICalendarDLG(Frame parentFrame) {
        super(parentFrame,"",true);
        try{
          jbInit();
          enableEvents(AWTEvent.WINDOW_EVENT_MASK);    }catch(Exception e){
          e.printStackTrace();
        }
        Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
        this.setSize(150,170);
    setLocation((d.width -getWidth())/2,(d.height-getHeight())/2) ;
      }
      private void fillDate(int pYear,int pMonth,int pDay){
        calendar = new GregorianCalendar(pYear,pMonth,1);
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy'-'MM'-'dd");
        FinalyDate=sdf.format(new GregorianCalendar(pYear,pMonth,pDay).getTime());
        TimeLabel.setText(FinalyDate);
        int maxDayCount = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
        if(pDay>maxDayCount)
          pDay=maxDayCount;
        int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
        int selectRow = 0;
        int selectCol = dayOfWeek;
        int count=0;
        int num=0;
        for(int i=0;i<6;i++){
          for(int j=0;j<7;j++){
            count++;
            if(count>=dayOfWeek&&count<maxDayCount+dayOfWeek)
            {
              model.setValueAt(String.valueOf(++num),i,j);
              if(num==pDay){
                selectRow=i;
                selectCol=j;
              }
            }
            else
              model.setValueAt(null,i,j);
          }
        }
        table.setRowSelectionInterval(selectRow,selectRow);
        table.setColumnSelectionInterval(selectCol,selectCol);
      }
      

  10.   

    还有,接前面的/**
       * 得到选择日期
       * */
      public String getFinalyDate(){
        return FinalyDate;
      }  private void jbInit() throws Exception {
        titledBorder1 = new TitledBorder("");
        this.setFont(new java.awt.Font("Dialog", 0, 10));
        this.setResizable(false);
        this.getContentPane().setLayout(borderLayout3);
        intYear=calendar.get(Calendar.YEAR);
        intMonth=calendar.get(Calendar.MONTH);
        intDay=calendar.get(Calendar.DATE);
        YearScrollbar.setMaximum(2100);
        YearScrollbar.setMinimum(1900);
        YearScrollbar.setOrientation(JScrollBar.HORIZONTAL);
        YearScrollbar.setFont(new java.awt.Font("Dialog", 0, 10));
        YearScrollbar.setBorder(BorderFactory.createLoweredBevelBorder());
        YearScrollbar.setMaximumSize(new Dimension(16, 20));
        YearScrollbar.setMinimumSize(new Dimension(16, 20));
        YearScrollbar.setNextFocusableComponent(table);
        YearScrollbar.setPreferredSize(new Dimension(50, 20));
        YearScrollbar.setValue(intYear);
        for(int i=1;i<=12;i++)
          MonthChoice.addItem(String.valueOf(i));
        MonthChoice.setSelectedIndex(intMonth);
        panel2.setLayout(xYLayout1);
        MonthChoice.setFont(new java.awt.Font("Dialog", 0, 10));
        MonthChoice.setBorder(BorderFactory.createLoweredBevelBorder());
        MonthChoice.setMaximumRowCount(2);
        label3.setFont(new java.awt.Font("Dialog", 0, 10));
        label3.setText("月");
        label2.setFont(new java.awt.Font("Dialog", 0, 10));
        label2.setText("年  ");
        table.getTableHeader().setFont(new Font("Dialog",0,10));
        table.getTableHeader().setDefaultRenderer(new DefaultTableCellRenderer(){
          public Component getTableCellRendererComponent(JTable table,
                                                   Object value,
                                                   boolean isSelected,
                                                   boolean hasFocus,
                                                   int row,
                                                   int column){
            if(value!=null)
              return new JLabel(value.toString(),JLabel.CENTER);
            else
              return new JLabel();
          }
        });
        table.getTableHeader().setResizingAllowed(false);
        table.getTableHeader().setReorderingAllowed(false);
        table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
        table.setCellSelectionEnabled(true);
        table.setColumnSelectionAllowed(true);
        table.setRowSelectionAllowed(true);
        table.setShowHorizontalLines(false);
        table.setShowVerticalLines(false);
        table.setGridColor(Color.white);
        table.setRowMargin(3);
        table.setFont(new java.awt.Font("Dialog", 0, 10));
        table.setAlignmentX((float) 0.0);
        table.setAlignmentY((float) 0.0);
        table.setAutoResizeMode(JTable.AUTO_RESIZE_NEXT_COLUMN);
        jPanel1.setLayout(borderLayout1);
        TimeLabel.setFont(new java.awt.Font("Dialog", 0, 10));
        TimeLabel.setText("label1");
        jPanel2.setLayout(borderLayout2);
        jScrollPane1.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
        jScrollPane1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER);
        jScrollPane1.setBorder(BorderFactory.createLoweredBevelBorder());
        jScrollPane1.setNextFocusableComponent(table);
        jPanel1.setBorder(BorderFactory.createLineBorder(Color.black));
        jPanel1.setNextFocusableComponent(table);
        YearTextField.setColumns(4);
        YearTextField.setEditable(false);
        YearTextField.setFont(new java.awt.Font("Dialog", 0, 10));
        YearTextField.setDisabledTextColor(Color.white);
        YearTextField.setText(String.valueOf(intYear));
        panel2.setNextFocusableComponent(table);
        jPanel2.setNextFocusableComponent(table);
        this.getContentPane().add(jPanel1,  BorderLayout.CENTER);
        jPanel1.add(jScrollPane1, BorderLayout.CENTER);
        jPanel1.add(panel2, BorderLayout.NORTH);
        panel2.add(MonthChoice, new XYConstraints(89, 0, 37, -1));
        panel2.add(label3, new XYConstraints(127, 0, 15, 20));
        panel2.add(label2, new XYConstraints(74, 0, -1, 20));
        panel2.add(YearTextField, new XYConstraints(19, 0, 37, -1));
        panel2.add(YearScrollbar, new XYConstraints(1, 0, 72, -1));
        jPanel1.add(jPanel2, BorderLayout.SOUTH);
        jPanel2.add(TimeLabel,  BorderLayout.WEST);
        table.setSelectionMode(0);
        MonthChoice.addItemListener(new java.awt.event.ItemListener() {
          public void itemStateChanged(ItemEvent e) {
            intMonth=MonthChoice.getSelectedIndex();
            fillDate(intYear,intMonth,intDay);
          }
        });
        YearScrollbar.addAdjustmentListener(new java.awt.event.AdjustmentListener() {
          public void adjustmentValueChanged(AdjustmentEvent e) {
            intYear=YearScrollbar.getValue();
            YearTextField.setText(String.valueOf(intYear));
            fillDate(intYear,intMonth,intDay);
          }
        });
        table.addMouseListener(new java.awt.event.MouseAdapter() {
          public void mouseClicked(MouseEvent e) {
            if(e.getClickCount()>1){
              try{
                Integer.parseInt(table.getValueAt(table.getSelectedRow(),table.getSelectedColumn()).toString());
                isConfirm=true;
                System.out.println(FinalyDate);
                cancel();
              }catch(Exception ex){}
            }else
              try{
                intDay=Integer.parseInt(table.getValueAt(table.getSelectedRow(),table.getSelectedColumn()).toString());
                calendar = new GregorianCalendar(intYear,intMonth,intDay);
              }catch(NumberFormatException ex){
              }catch(NullPointerException ex){}
            SimpleDateFormat sdf=new SimpleDateFormat("yyyy'-'MM'-'dd");
            FinalyDate=sdf.format(calendar.getTime());
            TimeLabel.setText(FinalyDate);
          }
        });
        this.requestFocus();
        table.requestFocus();
        fillDate(intYear,intMonth,intDay);
      }
      public void show(){
        isConfirm=false;
        super.show();  }  /**如果选择了日期*/
      public boolean isConfirm(){
        return isConfirm;
      }  protected void processWindowEvent(WindowEvent e) {
        if (e.getID() == WindowEvent.WINDOW_CLOSING) {
          cancel();
        }
        super.processWindowEvent(e);
      }
      private void cancel() {
        dispose();
      }
      public void run(){  }}