Java 网格布局弄乱了我的标签

Java 网格布局弄乱了我的标签,java,swing,fonts,Java,Swing,Fonts,我正在编写简单的日历应用程序。我有一个函数可以画不同的月份,但不知怎么的,其中有些是乱七八糟的。在这里: 如你所见,5月(5日)和8月(8日)没有正确显示。在不同的年份,不同的月份被打破。以下是负责绘制这些图的功能: JPanel month = new JPanel(); month.setBackground(Color.white); month.setPreferredSize(new Dimension(150,180)); month.setLayout(new Grid

我正在编写简单的日历应用程序。我有一个函数可以画不同的月份,但不知怎么的,其中有些是乱七八糟的。在这里:

如你所见,5月(5日)和8月(8日)没有正确显示。在不同的年份,不同的月份被打破。以下是负责绘制这些图的功能:

 JPanel month = new JPanel();

 month.setBackground(Color.white);
 month.setPreferredSize(new Dimension(150,180));
 month.setLayout(new GridLayout(6,6));
 for (int j=0; j<=6; j++)   //adding days of week labels
 {
      JLabel dayNameLabel = new JLabel(days[j]);
      dayNameLabel.setFont(new Font("Monospace", Font.ITALIC, 12));
      dayNameLabel.setOpaque(true);
      dayNameLabel.setForeground(Color.gray.darker());
      dayNameLabel.setBackground(Color.white);
      month.add(dayNameLabel );

 }
 int dayOfWeek=new GregorianCalendar(myDate.year,argMonth, 1).get(Calendar.DAY_OF_WEEK);
 int howMuchDays=new GregorianCalendar(myDate.year,argMonth, 1).getActualMaximum(Calendar.DAY_OF_MONTH);

 for(int j=0;j<dayOfWeek-1;j++){   //Adding blank spaces so every day can be on it's spot
     JLabel blank = new JLabel(" ");
     month.add(blank);
 }


 for (int j = 1; j<howMuchDays+1;j++)
 {
      JLabel dayField = new JLabel(Integer.toString(j));
      dayField.setFont(new Font("Monospace", Font.BOLD, 12));
      dayField.setOpaque(true);
      dayField.setBackground(Color.white);
      if (new GregorianCalendar(myDate.year, argMonth, j).get(Calendar.DAY_OF_WEEK) == 7)
          dayField.setForeground(Color.RED);    //make sunday red
      else
          dayField.setForeground(Color.BLACK);

      month.add(dayField );
 }


 add(month);
JPanel月=新的JPanel();
月.挫折背景(颜色.白色);
月.setPreferredSize(新维度(150180));
月设置布局(新网格布局(6,6));
对于(int j=0;j
新的网格布局(6,6)
?这没有意义,因为您不想要6乘6的网格

你不想改用新的GridLayout(0,7)
?这表示一个行数可变但总是有7列的网格,这正是你所需要的。

新的GridLayout(6,6)
?这没有意义,因为你不想要6乘6的网格

您不想改用
新的GridLayout(0,7)
?这表示行数可变但总是有7列的网格,这正是您需要的