// CALENDARIO import java.awt.*; import java.awt.event.*; import com.sun.java.swing.*; import com.sun.java.swing.event.*; import com.sun.java.swing.table.*; import java.util.Date; public class CalendarApplet extends JApplet { public static int WIDTH = 600; public static int HEIGHT = 400; Container frameContainer; // Swing components String[] years = {"1998","1999","2000","2001", "2002","2003","2004","2005"}; JComboBox comboBox = new JComboBox(years); String[] months = {"January","February","March","April","May", "June","July","August","September","October","November", "December"}; JList list = new JList(months); JScrollPane scrollPane = new JScrollPane(list); CalendarModel model = new CalendarModel(); JTable table = new JTable(model); JMenuBar menuBar = new JMenuBar(); JMenu yearMenu = new JMenu("Year"); JMenu monthMenu = new JMenu("Month"); JMenuItem[] yearMenuItems = new JMenuItem[years.length]; JMenuItem[] monthMenuItems = new JMenuItem[months.length]; public CalendarApplet() { buildGUI(); setupEventHandlers(); setSize(WIDTH,HEIGHT); } void buildGUI() { setupMenuBar(); layoutComponents(); } void setupMenuBar() { for(int i=0;i<years.length;++i) { yearMenuItems[i] = new JMenuItem(years[i]); yearMenu.add(yearMenuItems[i]); } for(int i=0;i<months.length;++i) { monthMenuItems[i] = new JMenuItem(months[i]); monthMenu.add(monthMenuItems[i]); } menuBar.add(yearMenu); menuBar.add(monthMenu); setJMenuBar(menuBar); } public void layoutComponents() { frameContainer = getContentPane(); frameContainer.setLayout(null); comboBox.setBounds(10,10,100,30); comboBox.setSelectedIndex(0); comboBox.addItemListener(new ComboHandler()); scrollPane.setBounds(200,10,150,100); list.setSelectedIndex(3); list.addListSelectionListener(new ListHandler()); table.setBounds(10,150,550,200); model.setMonth(comboBox.getSelectedIndex()+1998, list.getSelectedIndex()); frameContainer.add(comboBox); frameContainer.add(scrollPane); table.setGridColor(Color.black); table.setShowGrid(true); frameContainer.add(table); } void setupEventHandlers() { for(int i=0;i<yearMenuItems.length;++i) yearMenuItems[i].addActionListener(new YearMenuItemHandler()); for(int i=0;i<monthMenuItems.length;++i) monthMenuItems[i].addActionListener(new MonthMenuItemHandler()); } class CalendarModel extends AbstractTableModel { String[] days = {"Sun","Mon","Tue","Wed","Thu","Fri","Sat"}; int[] numDays = {31,28,31,30,31,30,31,31,30,31,30,31}; String[][] calendar = new String[7][7]; public CalendarModel() { for(int i=0;i<days.length;++i) calendar[0][i]=days[i]; for(int i=1;i<7;++i) for(int j=0;j<7;++j) calendar[i][j]=" "; } public int getRowCount() { return 7; } public int getColumnCount() { return 7; } public Object getValueAt(int row, int column) { return calendar[row][column]; } public void setValueAt(Object value,int row, int column) { calendar[row][column] = (String) value; } public void setMonth(int year,int month) { for(int i=1;i<7;++i) for(int j=0;j<7;++j) calendar[i][j]=" "; java.util.GregorianCalendar cal = new java.util.GregorianCalendar(); cal.set(year,month,1); int offset = cal.get(java.util.GregorianCalendar.DAY_OF_WEEK)-1; offset += 7; int num = daysInMonth(year,month); for(int i=0;i<num;++i) { calendar[offset/7][offset%7]=Integer.toString(i+1); ++offset; } } public boolean isLeapYear(int year) { if(year % 4 ==0) return true; return false; } public int daysInMonth(int year,int month) { int days = numDays[month]; if(month==1 && isLeapYear(year)) ++days; return days; } } public class ComboHandler implements ItemListener { public void itemStateChanged(ItemEvent e) { model.setMonth(comboBox.getSelectedIndex()+1998, list.getSelectedIndex()); table.repaint(); } } public class ListHandler implements ListSelectionListener { public void valueChanged(ListSelectionEvent e) { model.setMonth(comboBox.getSelectedIndex()+1998, list.getSelectedIndex()); table.repaint(); } } public class YearMenuItemHandler implements ActionListener { public void actionPerformed(ActionEvent e) { String cmd = e.getActionCommand(); int year = (new Integer(cmd)).intValue() - 1998; comboBox.setSelectedIndex(year); model.setMonth(comboBox.getSelectedIndex()+1998, list.getSelectedIndex()); table.repaint(); } } public class MonthMenuItemHandler implements ActionListener { public void actionPerformed(ActionEvent e) { String cmd = e.getActionCommand(); int month = 0; for(int i=0;i<months.length;++i) { if(cmd.equals(months[i])) { month = i; break; } } list.setSelectedIndex(month); model.setMonth(comboBox.getSelectedIndex()+1998, list.getSelectedIndex()); table.repaint(); } } }