banner



How To Create Calendar In Java Swing

You're going to have to create your own Calendar component so that you can set the days to different colors.

Here's a calendar I created for one of my projects.

Calendar

Here's the MonthPanel code that produces the calendar. Right now, it highlights the current day. You can modify it to highlight the days that your employees log in.

          import java.awt.BorderLayout; import java.awt.Color; import java.awt.FlowLayout; import java.awt.GridLayout; import java.awt.SystemColor; import java.util.Calendar;  import javax.swing.BorderFactory; import javax.swing.JLabel; import javax.swing.JPanel;  public class MonthPanel extends JPanel {      private static final long   serialVersionUID    = 1L;      protected int               month;     protected int               year;      protected String[]          monthNames          = { "January", "February",             "March", "April", "May", "June", "July", "August", "September",             "October", "November", "December"       };      protected String[]          dayNames            = { "S", "M", "T", "W",             "T", "F", "S"                           };      public MonthPanel(int month, int year) {         this.month = month;         this.year = year;          this.add(createGUI());     }      protected JPanel createGUI() {         JPanel monthPanel = new JPanel(true);         monthPanel.setBorder(BorderFactory                 .createLineBorder(SystemColor.activeCaption));         monthPanel.setLayout(new BorderLayout());         monthPanel.setBackground(Color.WHITE);         monthPanel.setForeground(Color.BLACK);         monthPanel.add(createTitleGUI(), BorderLayout.NORTH);         monthPanel.add(createDaysGUI(), BorderLayout.SOUTH);          return monthPanel;     }      protected JPanel createTitleGUI() {         JPanel titlePanel = new JPanel(true);         titlePanel.setBorder(BorderFactory                 .createLineBorder(SystemColor.activeCaption));         titlePanel.setLayout(new FlowLayout());         titlePanel.setBackground(Color.WHITE);          JLabel label = new JLabel(monthNames[month] + " " + year);         label.setForeground(SystemColor.activeCaption);          titlePanel.add(label, BorderLayout.CENTER);          return titlePanel;     }      protected JPanel createDaysGUI() {         JPanel dayPanel = new JPanel(true);         dayPanel.setLayout(new GridLayout(0, dayNames.length));          Calendar today = Calendar.getInstance();         int tMonth = today.get(Calendar.MONTH);         int tYear = today.get(Calendar.YEAR);         int tDay = today.get(Calendar.DAY_OF_MONTH);          Calendar calendar = Calendar.getInstance();         calendar.set(Calendar.MONTH, month);         calendar.set(Calendar.YEAR, year);         calendar.set(Calendar.DAY_OF_MONTH, 1);          Calendar iterator = (Calendar) calendar.clone();         iterator.add(Calendar.DAY_OF_MONTH,                 -(iterator.get(Calendar.DAY_OF_WEEK) - 1));          Calendar maximum = (Calendar) calendar.clone();         maximum.add(Calendar.MONTH, +1);          for (int i = 0; i < dayNames.length; i++) {             JPanel dPanel = new JPanel(true);             dPanel.setBorder(BorderFactory.createLineBorder(Color.BLACK));             JLabel dLabel = new JLabel(dayNames[i]);             dPanel.add(dLabel);             dayPanel.add(dPanel);         }          int count = 0;         int limit = dayNames.length * 6;          while (iterator.getTimeInMillis() < maximum.getTimeInMillis()) {             int lMonth = iterator.get(Calendar.MONTH);             int lYear = iterator.get(Calendar.YEAR);              JPanel dPanel = new JPanel(true);             dPanel.setBorder(BorderFactory.createLineBorder(Color.BLACK));             JLabel dayLabel = new JLabel();              if ((lMonth == month) && (lYear == year)) {                 int lDay = iterator.get(Calendar.DAY_OF_MONTH);                 dayLabel.setText(Integer.toString(lDay));                 if ((tMonth == month) && (tYear == year) && (tDay == lDay)) {                     dPanel.setBackground(Color.ORANGE);                 } else {                     dPanel.setBackground(Color.WHITE);                 }             } else {                 dayLabel.setText(" ");                 dPanel.setBackground(Color.WHITE);             }             dPanel.add(dayLabel);             dayPanel.add(dPanel);             iterator.add(Calendar.DAY_OF_YEAR, +1);             count++;         }          for (int i = count; i < limit; i++) {             JPanel dPanel = new JPanel(true);             dPanel.setBorder(BorderFactory.createLineBorder(Color.BLACK));             JLabel dayLabel = new JLabel();             dayLabel.setText(" ");             dPanel.setBackground(Color.WHITE);             dPanel.add(dayLabel);             dayPanel.add(dPanel);         }          return dayPanel;     }  }                  

And here's the code I used to produce the JFrame to display the MonthPanel.

          import java.awt.FlowLayout; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent;  import javax.swing.JFrame; import javax.swing.SwingUtilities;  public class CalendarFrame implements Runnable {      private JFrame  frame;      @Override     public void run() {         // Month is zero based         MonthPanel panel = new MonthPanel(5, 2013);          frame = new JFrame();         frame.setTitle("Calendar");         frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);         frame.addWindowListener(new WindowAdapter() {             @Override             public void windowClosing(WindowEvent event) {                 exitProcedure();             }         });          frame.setLayout(new FlowLayout());         frame.add(panel);         frame.pack();         // frame.setBounds(100, 100, 400, 200);         frame.setVisible(true);     }      public void exitProcedure() {         frame.dispose();         System.exit(0);     }      public static void main(String[] args) {         SwingUtilities.invokeLater(new CalendarFrame());      }  }                  

How To Create Calendar In Java Swing

Source: https://stackoverflow.com/questions/17232038/calendar-display-using-java-swing

Posted by: wiedmanmillopeat1966.blogspot.com

0 Response to "How To Create Calendar In Java Swing"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel