2013-11-20 3 views
0

Итак, все сделано, но у меня есть одна проблема: мой календарь не сохраняет начальную дату, поскольку мы проходим через неделю.Проблема с выпуском Java-календаря с первым днем ​​месяца

Вот мой код:

import java.awt.*; 
import java.util.GregorianCalendar; 

import javax.swing.*; 

public class Calendrier extends JApplet { 
    // Instance Variables 
    GregorianCalendar calendar = new GregorianCalendar(); 
    int ranger = 7; 
    int colonne = 7; 
    String[] semaine = { "Lu", "Ma", "Me", "Je", "Ve", "Sa", "Di" }; 
    JLabel[][] grid = new JLabel[ranger][colonne]; 
    JLabel jlblHeure = new JLabel("Heure: " + "" 
      + calendar.get(GregorianCalendar.HOUR_OF_DAY) + ":" 
      + calendar.get(GregorianCalendar.MINUTE)); 
    JPanel jpnlCalendar = new JPanel(new GridLayout(7 
      , 7)); 
    JPanel jpnlHeure = new JPanel(new GridLayout(1, 1)); 
    int day = calendar.get(GregorianCalendar.DATE); 
    int daysInMonth = calendar.getActualMaximum(GregorianCalendar.DAY_OF_MONTH); 
    int daysInWeek = calendar.get(GregorianCalendar.DAY_OF_WEEK); 

    public void init() { 
     // setting grid 
     for (int i = 0; i < grid.length; i++) { 
      for (int j = 0; j < grid[0].length; j++) { 
       grid[i][j] = new JLabel(); 
      } 

     } 
     // grid layout 
     Container contenu = getContentPane(); 
     for (int i = 0; i < ranger; i++) { 
      for (int j = 0; j < colonne; j++) { 
       jpnlCalendar.add(grid[i][j]); 
      } 
     } 
     // adding JPanels + positions 
     contenu.add(jpnlCalendar); 
     contenu.add(jpnlHeure, "South"); 
     jpnlHeure.add(jlblHeure); 

     // draw time 
     if (calendar.get(GregorianCalendar.MINUTE) < 10) { 
      jlblHeure = new JLabel("Heure: " + "" 
        + calendar.get(GregorianCalendar.HOUR_OF_DAY) + ":" + "0" 
        + calendar.get(GregorianCalendar.MINUTE)); 
     } 
     // draw week days 
     for (int i = 0; i < semaine.length; i++) { 
      grid[0][i].setText(semaine[i]); 
     } 
     // draw calendar 
     for (int i = 1; i <= daysInMonth; i++) { 
      int row = ((i + daysInWeek )/7); 
      int column = (i + daysInWeek) % 7; 
      grid[row + 1][column].setText("" + i); 
      if (i == day) { 
       grid[row + 1][column].setText(i + "*"); 
      } 
     } 

    } 

} 

Таким образом, это работает сегодня:

int row = ((i + daysInWeek) i++/7); 
int column = ((i + dayInWeek) % 7); 

Но завтра, я должен добавить -1 каждому daysInWeek.

Любое решение, так что это автоматизировано?

По крайней мере, поэтому мне не нужно менять его каждый день. Благодаря!

+1

Старайтесь не использовать бетон 'Calendar', если вы не должны, вместо этого использовать' Calendar.getInstance() ' – MadProgrammer

+0

Это часть задания, чтобы использовать GregorianCalendar. – user3011216

ответ

0

Я нашел его сам. Вот оно:

import java.awt.*; 
import java.util.GregorianCalendar; 

import javax.swing.*; 

public class Calendrier extends JApplet { 
    // Instance Variables 
    GregorianCalendar calendar = new GregorianCalendar(); 
    int ranger = 7; 
    int colonne = 7; 
    String[] semaine = { "Lu", "Ma", "Me", "Je", "Ve", "Sa", "Di" }; 
    JLabel[][] grid = new JLabel[ranger][colonne]; 
    JLabel jlblHeure = new JLabel("Heure: " + "" 
      + calendar.get(GregorianCalendar.HOUR_OF_DAY) + ":" 
      + calendar.get(GregorianCalendar.MINUTE)); 
    JPanel jpnlCalendar = new JPanel(new GridLayout(7, 7)); 
    JPanel jpnlHeure = new JPanel(new GridLayout(1, 1)); 
    int today = calendar.get(GregorianCalendar.DAY_OF_MONTH); 
    int daysInMonth = calendar.getActualMaximum(GregorianCalendar.DAY_OF_MONTH); 
    int daysInWeek = calendar.get(GregorianCalendar.DAY_OF_WEEK); 

    public void init() { 
     // setting grid 
     for (int i = 0; i < grid.length; i++) { 
      for (int j = 0; j < grid[0].length; j++) { 
       grid[i][j] = new JLabel(); 
      } 

     } 
     // grid layout 
     Container contenu = getContentPane(); 
     for (int i = 0; i < ranger; i++) { 
      for (int j = 0; j < colonne; j++) { 
       jpnlCalendar.add(grid[i][j]); 
      } 
     } 
     // adding JPanels + positions 
     contenu.add(jpnlCalendar); 
     contenu.add(jpnlHeure, "South"); 
     jpnlHeure.add(jlblHeure); 

     // draw time 
     if (calendar.get(GregorianCalendar.MINUTE) < 10) { 
      jlblHeure = new JLabel("Heure: " + "" 
        + calendar.get(GregorianCalendar.HOUR_OF_DAY) + ":" + "0" 
        + calendar.get(GregorianCalendar.MINUTE)); 
     } 
     // draw week days 
     for (int i = 0; i < semaine.length; i++) { 
      grid[0][i].setText(semaine[i]); 
     } 
     //conditions for the calendar 
     calendar.set(GregorianCalendar.DAY_OF_MONTH, 1); 
     int daysInWeek = calendar.get(GregorianCalendar.DAY_OF_WEEK) - 1; 
     System.out.print(daysInWeek); 
     if (daysInWeek == 0) 
      daysInWeek = 7; 
     calendar.set(GregorianCalendar.DAY_OF_MONTH, today); 

     int days = 1; 

     for (int k = daysInWeek - 1; k < colonne; k++) { 
      grid[1][k].setText(days + ""); 
      if (days == today) 
       grid[1][k].setText(days + "*"); 
      days++; 
     } 
     // draw calendar 
     for (int i = 2; i <= colonne; i++) { 
      for (int j = 0; j < ranger; j++) { 
       if (days <= daysInMonth) { 
        grid[i][j].setText(days + ""); 
        if (days == today) 
         grid[i][j].setText(days + "*"); 
        days++; 
       } 
      } 
     } 

    } 
} 
Смежные вопросы