// 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 Calendar extends JFrame { public static int WIDTH = 600; public static int HEIGHT = 400; public static String TITLE = "Calendar"; Container frameContainer; 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 fileMenu = new JMenu("File"); JMenuItem fileExit = new JMenuItem("Exit"); public Calendar() { super(TITLE); buildGUI(); setupEventHandlers(); setSize(WIDTH,HEIGHT); show(); } void buildGUI() { setupMenuBar(); layoutComponents(); } void setupMenuBar() { fileMenu.add(fileExit); menuBar.add(fileMenu); 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() { addWindowListener(new WindowHandler()); fileExit.addActionListener(new MenuItemHandler()); } public static void main(String[] args) { Calendar app = new Calendar(); } 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 WindowHandler extends WindowAdapter { public void windowClosing(WindowEvent e) { System.exit(0); } } 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 MenuItemHandler implements ActionListener { public void actionPerformed(ActionEvent e) { String cmd = e.getActionCommand(); if(cmd.equals("Exit")) System.exit(0); } } }