首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Eclipse开发 >

文本区中怎么打印出如图的万年历

2011-12-18 
文本区中如何打印出如图的万年历?代码我写了,可是不知如何放到文本区中,用append方法结果老出错,如何改更,

文本区中如何打印出如图的万年历?
代码我写了,可是不知如何放到文本区中,用append方法结果老出错,如何改更,才能变为如下结果?

-----------文-----------本----------区------------

========================================
    *日     一     二     三     四     五     六*       |1月
========================================
              1       2       3       4       5       6
      7       8       9     10     11     12     13
    14     15     16     17     18     19     20
    21     22     23     24     25     26     27
    28     29     30     31

========================================
    *日     一     二     三     四     五     六*       |2月
========================================
                                      1       2       3
      4       5       6       7       8       9     10
    11     12     13     14     15     16     17
    18     19     20     21     22     23     24
    25     26     27     28

========================================
    *日     一     二     三     四     五     六*       |3月
========================================
                                      1       2       3
      4       5       6       7       8       9     10
    11     12     13     14     15     16     17
    18     19     20     21     22     23     24
    25     26     27     28     29     30     31


========================================
    *日     一     二     三     四     五     六*       |4月
========================================
      1       2       3       4       5       6       7
      8       9     10     11     12     13     14
    15     16     17     18     19     20     21
    22     23     24     25     26     27     28
    29     30

========================================
    *日     一     二     三     四     五     六*       |5月


========================================
                      1       2       3       4       5
      6       7       8       9     10     11     12
    13     14     15     16     17     18     19
    20     21     22     23     24     25     26
    27     28     29     30     31

========================================
    *日     一     二     三     四     五     六*       |6月
========================================
                                              1       2
      3       4       5       6       7       8       9
    10     11     12     13     14     15     16
    17     18     19     20     21     22     23
    24     25     26     27     28     29     30


========================================
    *日     一     二     三     四     五     六*       |7月
========================================
      1       2       3       4       5       6       7
      8       9     10     11     12     13     14
    15     16     17     18     19     20     21
    22     23     24     25     26     27     28
    29     30     31

========================================
    *日     一     二     三     四     五     六*       |8月
========================================
                              1       2       3       4
      5       6       7       8       9     10     11
    12     13     14     15     16     17     18
    19     20     21     22     23     24     25
    26     27     28     29     30     31

========================================
    *日     一     二     三     四     五     六*       |9月
========================================
                                                      1


      2       3       4       5       6       7       8
      9     10     11     12     13     14     15
    16     17     18     19     20     21     22
    23     24     25     26     27     28     29
    30

========================================
    *日     一     二     三     四     五     六*       |10月
========================================
              1       2       3       4       5       6
      7       8       9     10     11     12     13
    14     15     16     17     18     19     20
    21     22     23     24     25     26     27
    28     29     30     31

========================================
    *日     一     二     三     四     五     六*       |11月
========================================
                                      1       2       3
      4       5       6       7       8       9     10
    11     12     13     14     15     16     17
    18     19     20     21     22     23     24
    25     26     27     28     29     30

========================================
    *日     一     二     三     四     五     六*       |12月
========================================
                                                      1
      2       3       4       5       6       7       8
      9     10     11     12     13     14     15
    16     17     18     19     20     21     22
    23     24     25     26     27     28     29
    30     31

-----------文-----------本----------区------------
import   java.applet.*;
import   java.awt.*;
import   java.awt.event.*;

public   class   LeapyearTest   extends   Applet   implements   ActionListener   {
Label   result;

Label   result1;



static   TextArea   txa;

TextField   t1;

Button   btn;

static   int   year;

boolean   leap;

static   int   weekDay;

public   void   init()   {
result   =   new   Label( "请输入要判断的年份 ");
result1   =   new   Label();
t1   =   new   TextField(5);
btn   =   new   Button( "判断 ");
txa   =   new   TextArea( "万年历 ",   12,   36,   TextArea.SCROLLBARS_VERTICAL_ONLY);
add(result);
add(t1);
add(btn);
add(result1);
add(txa);
btn.addActionListener(this);
}

public   void   actionPerformed(ActionEvent   e)   {
year   =   Integer.parseInt(t1.getText());
t1.setText( " ");
if   (year   <   1)   {
result1.setText( "输入的年份不能小于1! ");

return;

}
weekDay   =   (int)   firstDayOfYear(year);
txa.append( "   "   +   year   +   "年 ");

for   (int   i   =   1;   i   <=   12;   i++)   {

printMonth(i);
System.out.println( "\n ");
}

}

public   static   void   printMonth(int   m)   {
printHead(m);
int   days   =   daysOfMonth(m);
for   (int   i   =   1;   i   <=   days;   i++)   {
if   (i   <   10)
System.out.print( "       "   +   i);

else
System.out.print( "     "   +   i);
weekDay   =   (weekDay   +   1)   %   7;

if   (weekDay   ==   0)   {
System.out.println();
System.out.print( " ");//控制2-6行
}
}

}

public   static   void   printHead(int   m)   {

System.out.println( "======================================== ");

System.out.println( "     *日     一     二     三     四     五     六*       | "   +   m   +   "月 ");

System.out.println( "======================================== ");

for   (int   i   =   0;   i   <   weekDay;   i++)   {
System.out.print( "         ");//控制第一行
}
}

public   static   long   firstDayOfYear(int   y)   {
long   n;
n   =   y   *   365;
for   (int   i   =   1;   i   <   y;   i++)   {
if   (isLeapYear(i))
n   +=   1;

}

return   n   %=   7;
}

public   static   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;

}

public   static   boolean   isLeapYear(int   y)   {
return   ((y   %   4   ==   0   &&   y   %   100   !=   0)   ||   y   %   400   ==   0);
}

}

[解决办法]
/**
* Calendar test
* @author
*
*/
import java.awt.*;
import java.awt.event.*;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class LeapYearTest extends JFrame implements ActionListener {
/**
*
*/
private static final long serialVersionUID = 1L;

Label result;

TextArea txa;

TextField t1;

Button 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 Label( "year ");
t1 = new TextField(5);
t1.addKeyListener(new KeyAdapter() {
public void keyTyped(KeyEvent e) {
char input = e.getKeyChar();
if (!Character.isDigit(input) && input != '\b ') {
e.consume();
}
}
public void keyPressed(KeyEvent e) {
}
public void keyReleased(KeyEvent e) {
}
});
btn = new Button( "judge ");
panel.add(result);
panel.add(t1);
panel.add(btn);

txa = new TextArea( " ", 12, 36, TextArea.SCROLLBARS_VERTICAL_ONLY);
this.getContentPane().setLayout(new BorderLayout());
this.getContentPane().add(panel, "North ");
this.getContentPane().add(txa, "Center ");
btn.addActionListener(this);
}

public void actionPerformed(ActionEvent e) {
year = Integer.parseInt(t1.getText());
t1.setText( " ");
if (year < 1) {
txa.setText( "year canot be less than 1! ");
return;
}
weekDay = (int) firstDayOfYear(year);
txa.append( " Calendar " + year + "\n ");

for (int i = 1; i <= 12; i++) {
printMonth(i);
//System.out.println( "\n ");
txa.append( "\n ");
}
}

private void printMonth(int m) {
printHead(m);
int days = daysOfMonth(m);
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);
}

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

热点排行