Calendar

작업 중 소스

package net.jeongsam.gui.swing;

import java.util.Calendar;



public class CalendarGen {
	private Calendar cal;
	private int[][] calendar = new int[6][7];
	
	public CalendarGen(int year, int month) {
		this();
		cal.set(year, month - 1, 1);
		drawCalendar();
	}
	
	public CalendarGen() {
		cal = Calendar.getInstance();
	}
	
	/**
	 * 1일의 요일
	 * @return Calendar.DAY_OF_WEEK
	 */
	public int getDayOfWeekFirst() {
		return cal.get(Calendar.DAY_OF_WEEK);
	}
	
	/**
	 * 그달의 마지막 날짜
	 * @return Calendar.DATE
	 */
	public int getLastDateOfMonth() {
		return cal.getActualMaximum(Calendar.DATE);
	}
	
	public int[][] drawCalendar() {
		int space = 1;
		int date = 1;
		for (int i = 0; i < 6; i++) {
			for (int j = 0; j < 7; j++) {
				if (space++ < getDayOfWeekFirst())
					calendar[i][j] = 0;
				else
					if (date <= getLastDateOfMonth())
						calendar[i][j] = date++;
			}
		}
		
		return calendar;
	}
	
	public static void main(String[] args) {
		CalendarGen c = new CalendarGen(2009, 9);
		int[][] ans = c.drawCalendar();
		for (int[] i : ans) {
			for (int j : i)
				System.out.printf("%2d ", j);
			System.out.println();
		}
	}
}
package net.jeongsam.gui.swing;

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

public class CalendarView extends JFrame implements ActionListener {
	private int rows = 6;
	private int cols = 7;
	private int[][] cal;
	private JTextField txtYear;
	private JTextField txtMonth;
	private JPanel pCal;
	
	public CalendarView(int year, int month) {
		super(year + "년 " + month + "월");
		
		JPanel pYYYYMM = new JPanel();
		JButton draw = new JButton("달력표시");
		draw.addActionListener(this);
		
		txtYear = new JTextField(4);
		txtMonth = new JTextField(2);
		
		pCal = new JPanel();
		pCal.setLayout(new GridLayout(rows, cols));
		pCal = drawCalendar(year, month);
		
		pYYYYMM.add(txtYear);
		pYYYYMM.add(txtMonth);
		pYYYYMM.add(draw);
		
		
		add(pYYYYMM, BorderLayout.NORTH);
		add(pCal);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setSize(600, 500);
		setVisible(true);
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		new CalendarView(2009, 2);
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		pCal = drawCalendar(
				new Integer(txtYear.getText()), new Integer(txtMonth.getText()));
		repaint();
	}
	
	private JPanel drawCalendar(int year, int month) {
		cal = new CalendarGen(year, month).getCalendar();
		JPanel p = new JPanel();
		p.setLayout(new GridLayout(6, 7));
		
		for (int i = 0; i < rows; i++)
			for (int j = 0; j < cols; j++)
				p.add(new JButton(cal[i][j] != 0 ? cal[i][j] + "" : ""));
		
		return p;
	}
}

+ Recent posts