请写出实现的方法

解决方案 »

  1.   

    参考:http://community.csdn.net/Expert/TopicView.asp?id=5383638
    /**
     * Calendar test 根据年份,打印该年日历
     * @author 
     * 
     */
    import java.awt.BorderLayout;
    import java.awt.Dimension;
    import java.awt.TextArea;
    import java.awt.Toolkit;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.KeyAdapter;
    import java.awt.event.KeyEvent;
    import java.util.Calendar;
    import java.util.GregorianCalendar;import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JTextField;public class LeapYearTest extends JFrame implements ActionListener {
    /**
     * 
     */
    private static final long serialVersionUID = 1L; JLabel result; TextArea txa; JTextField t1; JButton btn;
    int year; boolean leap; int weekDay; public LeapYearTest() {
    super("Calendar Test");

    setSize(280, 700);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
    setLocation(dimension.width / 2 - 140, dimension.height / 2 - 350); JPanel panel = new JPanel();
    result = new JLabel("year");
    t1 = new JTextField(5);
    t1.setToolTipText("input the year > 0");
    btn = new JButton("generate");

    t1.addKeyListener(new KeyAdapter() {
    public void keyTyped(KeyEvent e) {
    char input = e.getKeyChar();
    if(input == '\n')
    generate();
    else if (!Character.isDigit(input) && input != '\b') {
    e.consume();
    }else{
    btn.setEnabled(true);
    }
    }
    public void keyPressed(KeyEvent e) {
    }
    public void keyReleased(KeyEvent e) {
    }
    });
    btn.setToolTipText("Generate the year " + t1.getText() + " Calendar");
    btn.setEnabled(false);
    panel.add(result);
    panel.add(t1);
    panel.add(btn); txa = new TextArea("", 12, 36, TextArea.SCROLLBARS_VERTICAL_ONLY);
    txa.setEditable(false);
    this.getContentPane().setLayout(new BorderLayout());
    this.getContentPane().add(panel, "North");
    this.getContentPane().add(txa, "Center");
    btn.addActionListener(this);


    } public void actionPerformed(ActionEvent e) {
    generate();
    } private void generate()
    {
    System.out.println(t1.getText());
    if(t1.getText() == null || t1.getText().equals("")){
    return;
    }
    year = Integer.parseInt(t1.getText());
    t1.setText("");
    if (year < 1) {
    txa.setText("year canot be less than 1!");
    return;
    }
    else
    txa.setText("          Calendar Year:" + year + "\n");
    weekDay = (int) firstDayOfYear(year);
    for (int i = 1; i <= 12; i++) {
    printMonth(i);
    // System.out.println("\n");
    txa.append("\n");
    }
    t1.setText("");
    btn.setEnabled(false);
    }
    private void printMonth(int m) {
    printHead(m);
    int days = daysOfMonth(m);
    Calendar calendar = new GregorianCalendar();
    for (int i = 1; i <= days; i++) {
    if (i < 10) {
    // System.out.print("   " + i);
    txa.append("   " + i);
    } else {
    // System.out.print("  " + i);
    txa.append("  " + i);
    }
    if(m == calendar.get(Calendar.MONTH)+1 && i == calendar.get(Calendar.DAY_OF_MONTH))
    txa.append("*");
    weekDay = (weekDay + 1) % 7;
    if (weekDay == 0) {
    // System.out.println();
    txa.append("\n");
    // System.out.print("");// 控制2-6行
    // txa.append("");
    }
    }
    } private void printHead(int m) {// System.out.println("========================================");
    // System.out.println("  *日  一  二  三  四  五  六*    " + m + "月");
    // System.out.println("========================================"); txa.append("========================================\n");
    txa.append("  日  一  二  三  四  五  六    " + m + "月\n");
    txa.append("========================================\n");
    for (int i = 0; i < weekDay; i++) {
    // System.out.print("    ");// 控制第一行
    txa.append("    ");
    }
    } private long firstDayOfYear(int y) {
    long n;
    n = y * 365;
    for (int i = 1; i < y; i++) {
    if (isLeapYear(i))
    n += 1;
    }
    return n %= 7;
    } private int daysOfMonth(int m) {
    switch (m) {
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:
    return 31;
    case 4:
    case 6:
    case 9:
    case 11:
    return 30;
    case 2:
    if (isLeapYear(year))
    return 29;
    else
    return 28;
    }
    return weekDay;
    } private boolean isLeapYear(int y) {
    return ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0);
    } public static void main(String[] args) {
    LeapYearTest test = new LeapYearTest();
    test.setVisible(true);
    test.setAlwaysOnTop(true);
    // test.setExtendedState(JFrame.MAXIMIZED_BOTH);
    JFrame.setDefaultLookAndFeelDecorated(true);
    }
    }
      

  2.   

    同一楼上,有了年,日期就定了。用Calendar day加1,循环