2012-05-07 3 views
-1
import javax.swing.*; 
import javax.swing.text.DateFormatter; 
import java.awt.*; 
import java.awt.event.*; 
import java.text.SimpleDateFormat; 
import java.util.GregorianCalendar; 

public class Calendar extends JFrame implements ActionListener { 
private JButton Next, Previous; 
private JLabel CurrDate,Time; 
private JLabel Days[]; 
private JButton [] dayButtons; 
private JPanel P1,P2,P3,P4,P5; 
private int year , month , day ,ch; 
String S1; 
GregorianCalendar GC=new GregorianCalendar();; 
int DayOfWeek=GC.get(GC.DAY_OF_WEEK); 

Color c = new Color(169,97,182); 
Color c2 = new Color(241,233,241); 
String[] months = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"}; 
Calendar() 
{   
    super("Calendar"); 

    year = GC.get(GC.YEAR); 
    month = GC.get(GC.MONTH); 
    day = GC.get(GC.DATE); 


    Previous = new JButton ("<<"); 
    Previous.setBackground(Color.LIGHT_GRAY); 
    Previous.addActionListener(this); 
    Next = new JButton (">>"); 
    Next.setBackground(Color.LIGHT_GRAY); 
    Next.addActionListener(this); 

    CurrDate = new JLabel ("     "+ months[month]+"  "+year+"    "); 
    CurrDate.setForeground(Color.WHITE); 
    CurrDate.setFont(new Font ("Serif",Font.ITALIC+Font.BOLD,15)); 
    CurrDate.setAlignmentX(CENTER_ALIGNMENT); 
    Days = new JLabel[7]; 
    Days[0] = new JLabel ("Sun   "); 
    Days[1] = new JLabel ("Mon   "); 
    Days[2] = new JLabel ("Tue   "); 
    Days[3] = new JLabel ("Wed   "); 
    Days[4] = new JLabel ("Thu   "); 
    Days[5] = new JLabel ("Fri   "); 
    Days[6] = new JLabel ("Sat   "); 
    for(JLabel l : Days) 
    { 
     l. setForeground(Color.WHITE); 
     l.setAlignmentX(LEFT_ALIGNMENT); 
    } 
    Time = new JLabel(); 
    Time.setText(GC.get(GC.HOUR)+":"+GC.get(GC.MINUTE)+":"+GC.get(GC.SECOND)); 
    Time.setForeground(Color.WHITE); 
    if(month ==0 || month ==2 || month == 4 || month ==6 || month==7 || month ==9 || month ==11) 
    { 
     ch = 1; 
    } 
    else 
    { 
     ch = 2; 
    } 

    P1 = new JPanel(); 
    P2 = new JPanel(); 
    P3 = new JPanel(); 
    P4 = new JPanel(); 
    P5 = new JPanel(); 
    P5.setLayout(new BorderLayout()); 
    P1.add(Previous); 
    P1.add(CurrDate); 
    DrawCalendar(DayOfWeek,year,month); 
    P1.add(Next); 
    P2.add(Days[0]); 
    P2.add(Days[1]); 
    P2.add(Days[2]); 
    P2.add(Days[3]); 
    P2.add(Days[4]); 
    P2.add(Days[5]); 
    P2.add(Days[6]); 

    P4.add(Time); 
    P1.setBackground(c); 
    P2.setBackground(c); 
    P4.setBackground(c); 

    P5.add (P1, BorderLayout.NORTH); 
    P5.add (P2, BorderLayout.CENTER); 
    add (P5,BorderLayout.NORTH); 
    add (P3, BorderLayout.CENTER); 
    add (P4, BorderLayout.SOUTH); 
    } 

private void DrawCalendar(int DayOfWeek, int year, int month) { 
    P3.setLayout(new GridLayout(7,7,3,3)); 
    dayButtons = new JButton [49]; 


    if(DayOfWeek == 1 && ch ==1) 
    { 
     for (int i = 0; i < 31; i++) 
     { dayButtons[ i ] = new JButton( i+1 +""); 
     P3.add(dayButtons[ i ]); 
     dayButtons[i].addActionListener(this); 
     dayButtons[i].setBackground(c2); 
     } 
     for (int i = 31; i < 49; i++) 
     { dayButtons[ i ] = new JButton(""); 
     P3.add(dayButtons[ i ]); 
     dayButtons[i].addActionListener(this); 
     dayButtons[i].setBackground(Color.LIGHT_GRAY); 
     } 
    } 
    if(DayOfWeek == 2 && ch ==1) 
    { 
     for (int i = 0; i < 1; i++) 
     { dayButtons[ i ] = new JButton(""); 
     P3.add(dayButtons[ i ]); 
     dayButtons[i].addActionListener(this); 
     dayButtons[i].setBackground(Color.LIGHT_GRAY); 
     } 
     for (int i = 1; i < 32; i++) 
     { dayButtons[ i ] = new JButton( i +""); 
     P3.add(dayButtons[ i ]); 
     dayButtons[i].addActionListener(this); 
     dayButtons[i].setBackground(c2); 
     } 
     for (int i = 32; i < 49; i++) 
     { dayButtons[ i ] = new JButton(""); 
     P3.add(dayButtons[ i ]); 
     dayButtons[i].addActionListener(this); 
     dayButtons[i].setBackground(Color.LIGHT_GRAY); 
     } 
    } 
    if(DayOfWeek == 3 && ch ==1) 
    { 
     for (int i = 0; i < 2; i++) 
     { dayButtons[ i ] = new JButton(""); 
     P3.add(dayButtons[ i ]); 
     dayButtons[i].addActionListener(this); 
     dayButtons[i].setBackground(Color.LIGHT_GRAY); 
     } 
     for (int i =2; i < 33; i++) 
     { dayButtons[ i ] = new JButton( i-1 +""); 
     P3.add(dayButtons[ i ]); 
     dayButtons[i].addActionListener(this); 
     dayButtons[i].setBackground(c2); 
     } 
     for (int i = 33; i < 49; i++) 
     { dayButtons[ i ] = new JButton(""); 
     P3.add(dayButtons[ i ]); 
     dayButtons[i].addActionListener(this); 
     dayButtons[i].setBackground(Color.LIGHT_GRAY); 
     } 
    } 
    if(DayOfWeek == 4 && ch ==1) 
    { 
     for (int i = 0; i < 3; i++) 
     { dayButtons[ i ] = new JButton(""); 
     P3.add(dayButtons[ i ]); 
     dayButtons[i].addActionListener(this); 
     dayButtons[i].setBackground(Color.LIGHT_GRAY); 
     } 
     for (int i =3; i < 34; i++) 
     { dayButtons[ i ] = new JButton( i-2 +""); 
     P3.add(dayButtons[ i ]); 
     dayButtons[i].addActionListener(this); 
     dayButtons[i].setBackground(c2); 
     } 
     for (int i = 34; i < 49; i++) 
     { dayButtons[ i ] = new JButton(""); 
     P3.add(dayButtons[ i ]); 
     dayButtons[i].addActionListener(this); 
     dayButtons[i].setBackground(Color.LIGHT_GRAY); 
     } 
    } 
    if(DayOfWeek == 5 && ch ==1) 
    { 
     for (int i = 0; i < 4; i++) 
     { dayButtons[ i ] = new JButton(""); 
     P3.add(dayButtons[ i ]); 
     dayButtons[i].addActionListener(this); 
     dayButtons[i].setBackground(Color.LIGHT_GRAY); 
     } 
     for (int i =4; i < 35; i++) 
     { dayButtons[ i ] = new JButton( i-3 +""); 
     P3.add(dayButtons[ i ]); 
     dayButtons[i].addActionListener(this); 
     dayButtons[i].setBackground(c2); 
     } 
     for (int i = 35; i < 49; i++) 
     { dayButtons[ i ] = new JButton(""); 
     P3.add(dayButtons[ i ]); 
     dayButtons[i].addActionListener(this); 
     dayButtons[i].setBackground(Color.LIGHT_GRAY); 
     } 
    } 
    if(DayOfWeek == 6 && ch ==1) 
    { 
     for (int i = 0; i < 5; i++) 
     { dayButtons[ i ] = new JButton(""); 
     P3.add(dayButtons[ i ]); 
     dayButtons[i].addActionListener(this); 
     dayButtons[i].setBackground(Color.LIGHT_GRAY); 
     } 
     for (int i =5; i < 36; i++) 
     { dayButtons[ i ] = new JButton( i-4 +""); 
     P3.add(dayButtons[ i ]); 
     dayButtons[i].addActionListener(this); 
     dayButtons[i].setBackground(c2); 
     } 
     for (int i = 36; i < 49; i++) 
     { dayButtons[ i ] = new JButton(""); 
     P3.add(dayButtons[ i ]); 
     dayButtons[i].addActionListener(this); 
     dayButtons[i].setBackground(Color.LIGHT_GRAY); 
     } 
    } 
    if(DayOfWeek == 7 && ch ==1) 
    { 
     for (int i = 0; i < 6; i++) 
     { dayButtons[ i ] = new JButton(""); 
     P3.add(dayButtons[ i ]); 
     dayButtons[i].addActionListener(this); 
     dayButtons[i].setBackground(Color.LIGHT_GRAY); 
     } 
     for (int i =6; i < 37; i++) 
     { dayButtons[ i ] = new JButton( i-5 +""); 
     P3.add(dayButtons[ i ]); 
     dayButtons[i].addActionListener(this); 
     dayButtons[i].setBackground(c2); 
     } 
     for (int i = 37; i < 49; i++) 
     { dayButtons[ i ] = new JButton(""); 
     P3.add(dayButtons[ i ]); 
     dayButtons[i].addActionListener(this); 
     dayButtons[i].setBackground(Color.LIGHT_GRAY); 
     } 
    } 
    if(DayOfWeek == 1 && ch ==2) 
    { 
     for (int i = 0; i < 30; i++) 
     { dayButtons[ i ] = new JButton(i+1+""); 
     P3.add(dayButtons[ i ]); 
     dayButtons[i].addActionListener(this); 
     dayButtons[i].setBackground(c2); 
     } 
     for (int i = 30; i < 49; i++) 
     { dayButtons[ i ] = new JButton(""); 
     P3.add(dayButtons[ i ]); 
     dayButtons[i].addActionListener(this); 
     dayButtons[i].setBackground(Color.LIGHT_GRAY); 
     } 

    } 
    if(DayOfWeek == 2 && ch ==2) 
    { 
     for (int i = 0; i < 1; i++) 
     { dayButtons[ i ] = new JButton(""); 
     P3.add(dayButtons[ i ]); 
     dayButtons[i].addActionListener(this); 
     dayButtons[i].setBackground(Color.LIGHT_GRAY); 
     } 
     for (int i =1; i < 31; i++) 
     { dayButtons[ i ] = new JButton( i +""); 
     P3.add(dayButtons[ i ]); 
     dayButtons[i].addActionListener(this); 
     dayButtons[i].setBackground(c2); 
     } 
     for (int i = 31; i < 49; i++) 
     { dayButtons[ i ] = new JButton(""); 
     P3.add(dayButtons[ i ]); 
     dayButtons[i].addActionListener(this); 
     dayButtons[i].setBackground(Color.LIGHT_GRAY); 
     } 
    } 
    if(DayOfWeek == 3 && ch ==2) 
    { 
     for (int i = 0; i < 2; i++) 
     { dayButtons[ i ] = new JButton(""); 
     P3.add(dayButtons[ i ]); 
     dayButtons[i].addActionListener(this); 
     dayButtons[i].setBackground(Color.LIGHT_GRAY); 
     } 
     for (int i =2; i < 32; i++) 
     { dayButtons[ i ] = new JButton( i-1 +""); 
     P3.add(dayButtons[ i ]); 
     dayButtons[i].addActionListener(this); 
     dayButtons[i].setBackground(c2); 
     } 
     for (int i = 32; i < 49; i++) 
     { dayButtons[ i ] = new JButton(""); 
     P3.add(dayButtons[ i ]); 
     dayButtons[i].addActionListener(this); 
     dayButtons[i].setBackground(Color.LIGHT_GRAY); 
     } 
    } 
    if(DayOfWeek == 4 && ch ==2) 
    { 
     for (int i = 0; i < 3; i++) 
     { dayButtons[ i ] = new JButton(""); 
     P3.add(dayButtons[ i ]); 
     dayButtons[i].addActionListener(this); 
     dayButtons[i].setBackground(Color.LIGHT_GRAY); 
     } 
     for (int i =3; i < 33; i++) 
     { dayButtons[ i ] = new JButton( i-2 +""); 
     P3.add(dayButtons[ i ]); 
     dayButtons[i].addActionListener(this); 
     dayButtons[i].setBackground(c2); 
     } 
     for (int i = 33; i < 49; i++) 
     { dayButtons[ i ] = new JButton(""); 
     P3.add(dayButtons[ i ]); 
     dayButtons[i].addActionListener(this); 
     dayButtons[i].setBackground(Color.LIGHT_GRAY); 
     } 
    } 
    if(DayOfWeek == 5 && ch ==2) 
    { 
     for (int i = 0; i < 4; i++) 
     { dayButtons[ i ] = new JButton(""); 
     P3.add(dayButtons[ i ]); 
     dayButtons[i].addActionListener(this); 
     dayButtons[i].setBackground(Color.LIGHT_GRAY); 
     } 
     for (int i =4; i < 35; i++) 
     { dayButtons[ i ] = new JButton( i-3 +""); 
     P3.add(dayButtons[ i ]); 
     dayButtons[i].addActionListener(this); 
     dayButtons[i].setBackground(c2); 
     } 
     for (int i = 35; i < 49; i++) 
     { dayButtons[ i ] = new JButton(""); 
     P3.add(dayButtons[ i ]); 
     dayButtons[i].addActionListener(this); 
     dayButtons[i].setBackground(Color.LIGHT_GRAY); 
     } 
    } 
    if(DayOfWeek == 6 && ch ==2) 
    { 
     for (int i = 0; i < 5; i++) 
     { dayButtons[ i ] = new JButton(""); 
     P3.add(dayButtons[ i ]); 
     dayButtons[i].addActionListener(this); 
     dayButtons[i].setBackground(Color.LIGHT_GRAY); 
     } 
     for (int i =5; i < 36; i++) 
     { dayButtons[ i ] = new JButton( i-4 +""); 
     P3.add(dayButtons[ i ]); 
     dayButtons[i].addActionListener(this); 
     dayButtons[i].setBackground(c2); 
     } 
     for (int i = 36; i < 49; i++) 
     { dayButtons[ i ] = new JButton(""); 
     P3.add(dayButtons[ i ]); 
     dayButtons[i].addActionListener(this); 
     dayButtons[i].setBackground(Color.LIGHT_GRAY); 
     } 
    } 
    if(DayOfWeek == 7 && ch ==2) 
    { 
     for (int i = 0; i < 6; i++) 
     { dayButtons[ i ] = new JButton(""); 
     P3.add(dayButtons[ i ]); 
     dayButtons[i].addActionListener(this); 
     dayButtons[i].setBackground(Color.LIGHT_GRAY); 
     } 
     for (int i =6; i < 37; i++) 
     { dayButtons[ i ] = new JButton( i-5 +""); 
     P3.add(dayButtons[ i ]); 
     dayButtons[i].addActionListener(this); 
     dayButtons[i].setBackground(c2); 
     } 
     for (int i = 37; i < 49; i++) 
     { dayButtons[ i ] = new JButton(""); 
     P3.add(dayButtons[ i ]); 
     dayButtons[i].addActionListener(this); 
     dayButtons[i].setBackground(Color.LIGHT_GRAY); 
     } 
    } 
    for(int i = DayOfWeek-1; i<49 ; i++) 
    { 
     if(i- DayOfWeek+2 == GC.get(GC.DATE)) 
     { 
      dayButtons[i].setBackground(c); 
     } 
    } 


} 


public void actionPerformed(ActionEvent arg0) { 


    if(arg0.getSource()== Previous) 
    { clear(); 


     if(month !=0) 
     { 
      month --; 

      if(month ==0 || month ==2 || month == 4 || month ==6 || month==7 || month ==9 || month ==11) 
      { 
       ch=1; 
      } 
      else 
      { 
       ch=2; 
      } 

     } 
     else 
     { 
      year--; 
      month=11; 
      ch=1; 
     } 
     CurrDate.setText ("     "+ months[month]+"  "+year+"    "); 
     GregorianCalendar cal = new GregorianCalendar(year, month, 1); 
     int d=cal.get(cal.DAY_OF_WEEK); 
     DayOfWeek=d; 
     DrawCalendar(d,year,month); 

     P4.add(Time); 
     P1.setBackground(c); 
     P2.setBackground(c); 
     P4.setBackground(c); 
    } 
    if(arg0.getSource()== Next) 
    { 
     clear(); 

     if(month !=11) 
     { 
      month ++; 
      if(month ==0 || month ==2 || month == 4 || month ==6 || month==7 || month ==9 || month ==11) 
      { 
       ch=1; 
      } 
      else 
      { 
       ch=2; 
      } 
     } 
     else 
     { 
      year++; 
      month=0; 
      ch=1; 

     } 
     CurrDate.setText ("     "+ months[month]+"  "+year+"    "); 
     GregorianCalendar cal = new GregorianCalendar(year, month, 1); 
     int d=cal.get(cal.DAY_OF_WEEK); 
     DayOfWeek=d; 
     DrawCalendar(d,year,month); 
     P4.add(Time); 
     P1.setBackground(c); 
     P2.setBackground(c); 
     P4.setBackground(c); 

    } 
    for(int i=DayOfWeek-1; i<30+DayOfWeek; i++) 
    { 
     if(arg0.getSource()==dayButtons[i]) 
     { 
      S1 = JOptionPane.showInputDialog(this,"Insert your Note"); 

     } 
    } 


} 

private void clear() { 
    for(int i =0; i<6;i++) 
    { 
     for(int j=0;j<7;j++) 
     { 
      P3.removeAll(); 
     } 
    } 

} 

public static void main(String [] args){ 
    Calendar C = new Calendar(); 
    C.setSize(400,315); 

    C.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    C.setVisible(true); 
    C.setResizable(false); 
    } 


} 

こんにちはすべて,,, :)日数はどうなっていますか?

このカレンダーに問題が各月の日数! 私が書いたコードは、何をすべきかのようには機能しません! 問題がどこにあるのか分かりません とにかく助けてくれる人がいれば!

enter image description here

+2

多分、あなたは問題を少しはっきりと定義することができます... 5月は31日間です。 –

+0

Javaの曜日http://www.exampledepot.com/egs/java.util/DayOfWeek.html –

+2

問題を見つけやすくするために、このコードを単純化することはできますか? –

答えて

1

あなたが繰り返されるコードの呼び出しをパラメータ化する場合は、多くのコードを減らすことができます

private void tripleDraw (int n1, int n2, int d) 
{ 
    for (int i = 0; i < n1; i++) 
    { 
     dayButtons [i] = new JButton (""); 
     P3.add (dayButtons [i]); 
     dayButtons [i].setBackground (Color.LIGHT_GRAY); 
    } 
    for (int i = n1; i < n2; i++) 
    { 
     dayButtons [i] = new JButton (i+d + ""); 
     P3.add (dayButtons [i]); 
     dayButtons [i].setBackground (c2); 
    } 
    for (int i = n2; i < 49; i++) 
    { 
     dayButtons [i] = new JButton (""); 
     P3.add (dayButtons [i]); 
     dayButtons [i].setBackground (Color.LIGHT_GRAY); 
    } 
} 

private void DrawCalendar (int DayOfWeek, int year, int month) 
{ 
    P3.setLayout (new GridLayout (7, 7, 3, 3)); 
    dayButtons = new JButton [49]; 

    if (DayOfWeek == 1 && ch == 1) tripleDraw (0, 31, 1); 
    if (DayOfWeek == 2 && ch == 1) tripleDraw (1, 32, 0); 
    if (DayOfWeek == 3 && ch == 1) tripleDraw (2, 33, -1); 
    if (DayOfWeek == 4 && ch == 1) tripleDraw (3, 34, -2); 
    if (DayOfWeek == 5 && ch == 1) tripleDraw (4, 35, -3); 
    if (DayOfWeek == 6 && ch == 1) tripleDraw (5, 36, -4); 
    if (DayOfWeek == 7 && ch == 1) tripleDraw (6, 37, -5); 

    if (DayOfWeek == 1 && ch == 2) tripleDraw (0, 30, 1); 
    if (DayOfWeek == 2 && ch == 2) tripleDraw (1, 31, 0); 
    if (DayOfWeek == 3 && ch == 2) tripleDraw (2, 32, -1); 
    if (DayOfWeek == 4 && ch == 2) tripleDraw (3, 33, -2); 
    if (DayOfWeek == 5 && ch == 2) tripleDraw (4, 35, -3); 
    if (DayOfWeek == 6 && ch == 2) tripleDraw (5, 36, -4); 
    if (DayOfWeek == 7 && ch == 2) tripleDraw (6, 37, -5); 

を次に、35から33からのジャンプがあること、第二のブロック(CH == 2)で見る - あります意図的?ように

if (ch == 1) tripleDraw (DayOfWeek - 1, DayOfWeek + 31, 2-DayOfWeek); 

と:

次のステップは、あろうと最初のブロックを交換します。

+0

次に、2番目のブロック(ch == 2)に、33から35へのジャンプがあることがわかります。これは意図的ですか? いいえ、そうではありません:D thnx alot – Beesan

2

ボタンがクリックされたときに「CH」を再計算していないので、日数が常に31である理由があります。

これを理解できなかった理由は、実際に必要とされるコードの約5〜10倍のコードを使用していることと混乱しているからです。 デバッグにデバッガを使用していない可能性もあります。

Checkstyle、FindBugs、PMDなどのデフォルトルールを使用して、コードに間違いがあるかどうかを教えてください。

+0

実際、各クリックでそれを再計算します! if(月!= 0) \t \t \t { \t \t \t \t月 - \t \t \t \t \t \t \t \t IF(月== 0 ||月== 2 ||ヶ月== 4 ||ヶ月== 6 ||ヶ月== 7 ||ヶ月== 9月|| = = 11) \t \t \t \t { \t \t \t \t \t CH = 1。 \t \t \t \t} \t \t \t他\t \t \t \t \t { \t \t \t \t \t CH = 2。 \t \t \t \t} \t \t \t \t \t \t} \t \t他\t \t \t \t { \t \t \t \t year--。 \t \t \t \t月= 11; \t \t \tch = 1; \t \t \t – Beesan

+0

いいえ、そうではありません。 actionPerformedメソッドは、クリックごとに呼び出され、その都度、「ch」を再計算しません。 –

関連する問題