관리 메뉴

IT창고

자바(JAVA) 실습 - GUI로 달력만들기 본문

프로그래밍/JAVA

자바(JAVA) 실습 - GUI로 달력만들기

방구석여포 2017. 9. 11. 01:51


조건

1. Grid 뷰를 이용하여 달력만들기

2. 콘솔창에서도 달력이 나오도록 만들기

3. 토요일은 파랑색 일요일은 빨강색으로 색입히기


소스코드

Main

public class Main {


public static void main(String[] args) {

Frame myFrame = new Frame("달력 프레임");

     int frameWidth = 500;

int frameHeight = 300;

     /** 달력용 **/

ArrayList<Integer> calArr = new ArrayList<>();

Calendar cal = Calendar.getInstance();

int year = cal.get(Calendar.YEAR);

int month = cal.get(Calendar.MONTH); //month는 0이 1월 11이 12월이다

int date = cal.get(Calendar.DATE);

int lastDay = cal.getActualMaximum(Calendar.DATE);

/** 이번달 세팅 **/

for (int i = 0; i < lastDay; i++) {

calArr.add(i+1);

}

/** 지난 달 세팅 완료 **/ 

cal.set(Calendar.DATE, 1); // 1일로 세팅

int yoil= cal.get(Calendar.DAY_OF_WEEK); // 1 일요일 ~ 7 토요일 

int numOfPreMonth =  yoil - 1;

cal.add(Calendar.MONTH, -1);

lastDay = cal.getActualMaximum(Calendar.DATE);

for (int i = 0; i < numOfPreMonth; i++) {

calArr.add(0, lastDay);

lastDay--;

}

/** 다음달 세팅 **/

cal.add(Calendar.MONTH, 1);

lastDay = cal.getActualMaximum(Calendar.DATE);

cal.set(Calendar.DATE, lastDay);

yoil= cal.get(Calendar.DAY_OF_WEEK);

int numOfNextMonth = 7 - yoil;

for (int i = 0; i < numOfNextMonth; i++) {

calArr.add(i+1);

}

/** 콘솔창으로 구현 **/

for (int i = 0; i < calArr.size(); i++) {

System.out.print(calArr.get(i)+", ");

if(i % 7 ==6){

System.out.println("");

}

}

/** 프레임으로 구현  **/

GridLayout gridLayout = new GridLayout(calArr.size() / 7, 7);

myFrame.setLayout(gridLayout);

for (int i = 0; i < calArr.size(); i++) {

//myFrame.add(new Button(calArr.get(i)+""));

Button tempBtn = new Button(calArr.get(i) + "");

if(i%7 ==0){

tempBtn.setForeground(Color.red);

}else if(i%7 ==6){

tempBtn.setForeground(Color.BLUE);

}

myFrame.add(tempBtn);

}

setFrame(frameWidth,  frameHeight, myFrame);

}

    private static void setFrame(int frameWidth, int frameHeight, Frame myFrame) {

myFrame.setSize(frameWidth, frameHeight);  //사이즈 지정

myFrame.setResizable(false);


Dimension scr = Toolkit.getDefaultToolkit().getScreenSize();


int width = (int) scr.getWidth();

int height = (int) scr.getHeight();

myFrame.setLocation((width / 2) - (frameWidth / 2)

, (height / 2) - (frameHeight / 2)); //유동식 좌표

myFrame.setVisible(true);

myFrame.addWindowListener(new WindowAdapter() {    // exit 종료 가능

@Override

public void windowClosing(WindowEvent e){

System.exit(0);  

}

});

}

결과화면

콘솔창과 프레임창이 제대로 출력이되었고 토요일과 일요일의 색깔도 입혔습니다. 달력 기준은 글 작성날짜인 2017/09/11 입니다.

Comments