Calendar
-
예제 9월 4일 스윙을 이용한 달력 만들기2009.09.04
예제 9월 4일 스윙을 이용한 달력 만들기
2009. 9. 4. 16:23
작업 중 소스
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; } }