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.
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