Advertisement
Guest User

Untitled

a guest
Jul 21st, 2012
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.41 KB | None | 0 0
  1. import java.awt.*;
  2. import java.awt.event.*;
  3. import java.text.*;
  4. import java.util.*;
  5. import javax.swing.*;
  6.  
  7. public class MyWidget extends JFrame implements ActionListener, Runnable {
  8.     String[] w = { "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun", };
  9.     String[] m = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", };
  10.     JPanel p2;
  11.     JLabel lblMonthYear, lblTime;
  12.     JButton btnPrevMonth, btnNextMonth;
  13.     int year, month;
  14.     Calendar calendar;
  15.     DateFormat formatter;
  16.  
  17.     public MyWidget() {
  18.         this.setResizable(false);
  19.         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  20.         this.setLayout(new BorderLayout());
  21.         JPanel p1 = new JPanel(new BorderLayout());
  22.         this.p2 = new JPanel(new GridLayout(0, 7));
  23.         this.calendar = Calendar.getInstance();
  24.         this.year = calendar.get(Calendar.YEAR);
  25.         this.month = calendar.get(Calendar.MONTH);
  26.         this.btnPrevMonth = new JButton("<");
  27.         this.btnPrevMonth.addActionListener(this);
  28.         this.lblMonthYear = new JLabel();
  29.         this.lblMonthYear.setHorizontalAlignment(JLabel.CENTER);
  30.         this.btnNextMonth = new JButton(">");
  31.         this.btnNextMonth.addActionListener(this);
  32.         p1.add(btnPrevMonth, BorderLayout.WEST);
  33.         p1.add(lblMonthYear, BorderLayout.CENTER);
  34.         p1.add(btnNextMonth, BorderLayout.EAST);
  35.         this.lblTime = new JLabel();
  36.         this.formatter = new SimpleDateFormat("HH:mm:ss");
  37.         JPanel pnlHeader = new JPanel(new BorderLayout());
  38.         JPanel pnlCenter = new JPanel(new BorderLayout());
  39.         JPanel pnlFooter = new JPanel();
  40.         pnlHeader.add(p1, BorderLayout.NORTH);
  41.         pnlCenter.add(p2, BorderLayout.CENTER);
  42.         pnlFooter.add(lblTime);
  43.         this.add(pnlHeader, BorderLayout.NORTH);
  44.         this.add(pnlCenter, BorderLayout.CENTER);
  45.         this.add(pnlFooter, BorderLayout.SOUTH);
  46.         showCalendar();
  47.         this.pack();
  48.     }
  49.  
  50.     private void showCalendar() {
  51.         p2.removeAll();
  52.         p2.repaint();
  53.         for(int i=0; i<7; i++) {
  54.             JLabel l = new JLabel(w[i]);
  55.             l.setHorizontalAlignment(JLabel.CENTER);
  56.             p2.add(l);
  57.         }
  58.         this.lblMonthYear.setText(m[month] + " " + year);
  59.        
  60.         JLabel[][] days = new JLabel[7][7];
  61.         calendar.set(Calendar.YEAR, year);
  62.         calendar.set(Calendar.MONTH, month);
  63.         calendar.set(Calendar.DATE, 1);
  64.        
  65.         int dayOfWeekOn1st = (calendar.get(Calendar.DAY_OF_WEEK) + 5) % 7;
  66.         for(int i=0; i<dayOfWeekOn1st; i++) {
  67.             days[0][i] = new JLabel();
  68.             days[0][i].setHorizontalAlignment(JLabel.CENTER);
  69.             p2.add(days[0][i]);
  70.         }
  71.         int day = 1;
  72.         for(int i=dayOfWeekOn1st; i<7; i++) {
  73.             days[0][i] = new JLabel("" + (day++));
  74.             days[0][i].setHorizontalAlignment(JLabel.CENTER);
  75.             p2.add(days[0][i]);
  76.         }
  77. here: for(int r=1; r<7; r++) {
  78.             days[r] = new JLabel[7];
  79.             for(int i=0; i<7; i++) {
  80.                 if(day > calendar.getActualMaximum(Calendar.DATE)) { break here; }
  81.                 days[r][i] = new JLabel("" + day);
  82.                 days[r][i].setHorizontalAlignment(JLabel.CENTER);
  83.                 day += 1;
  84.                 p2.add(days[r][i]);
  85.             }
  86.         }
  87.     }
  88.  
  89.     @Override public void run() {
  90.         for( ; ; ) {
  91.             try {
  92.                 Calendar now = Calendar.getInstance();
  93.                 lblTime.setText(formatter.format(now.getTime()));
  94.                 Thread.sleep(500);
  95.             } catch(InterruptedException ex) {
  96.                 ex.printStackTrace();
  97.             }
  98.         }
  99.     }
  100.  
  101.     @Override public void actionPerformed(ActionEvent e) {
  102.         Object source = e.getSource();
  103.         if(source == btnNextMonth) {
  104.             if(month == 11) {
  105.                 year += 1;
  106.                 month = 0;
  107.             } else {
  108.                 month += 1;
  109.             }
  110.             showCalendar();
  111.         } else if(source == btnPrevMonth) {
  112.             if(month == 0) {
  113.                 year -= 1;
  114.                 month = 11;
  115.             } else {
  116.                 month -= 1;
  117.             }
  118.             showCalendar();
  119.         }
  120.     }
  121.  
  122.     public static void main(String[] args) {
  123.         MyWidget self = new MyWidget();
  124.         new Thread(self).start();
  125.         self.setVisible(true);
  126.     }
  127. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement