// 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);
}
}
}