소스 자체가 길다보니까 최대한 핵심적인 부분만 뽑아서 복사해왔어 ㅠ 자바 잘하는 형들 좀 부탁좀할게 ㅠ







일단 지금 내가 달력에 일정넣는거러 만들고 있거든. 일단 셀을 더블클릭했을때 일정 추가창이 뜨고,


추가버튼 위쪽에 텍스트창에 글자를 치고 추가버튼을 누르면 밑에 텍스트창에 복사가 되고, 또 선택한 셀 정중앙에 글자가 나오는거야.


(셀 정중앙에 나오는 글자는 JLabel schedule 로 선언해뒀음.)






더블클릭 한 이후부터 소스코드 보여줄게







---------------Calendar Cell 클래스-----------------------


public void mouseClicked( MouseEvent e ) {

if(e.getClickCount()==2){

calendar.doubleClicked(); // 일정 관리창 추가.

}

}


우선 이게 CalendarCell 클래스의 마우스 두번눌렀을때 이벤트 핸들링임. calendar 인스턴스로 넘긴다는 뜻이거든(클래스는 CalendarPanel)







------------------CalendarPanel 클래스-------------------------


public void doubleClicked(){


recountDate();

tx=new TextWindow(this, cellSize, sDate, cDate);

System.out.println(sDate);

System.out.print(cDate);

}



이게 그 CalendarPanel 클래스의 더블클릭 메소드야. 여기서 Textwindow를 하나 만듬( 더블클릭하면 뜨는 창)









------------------------------더블클릭하면 나오는 새 창 클래스---------------------------



package cal.gui;


import javax.swing.*;


import java.awt.event.*;

import java.awt.*;


class TextWindow extends JFrame {


MyCenterPanel a;

Container contentPane;

TextWindow(CalendarPanel calendar, Dimension d, int sDate, int cDate) {

setTitle("일정 추가");

a= new MyCenterPanel(calendar, d, sDate, cDate);

contentPane = getContentPane();

contentPane.add(a, BorderLayout.CENTER);


setSize(300,300);

setVisible(true);

}


class MyCenterPanel extends JPanel {

CalendarPanel calendar;

Dimension d;

int sD, cD;

DaysPane dp;



JTextField tf;

JButton btn;

JTextArea ta;

public Dimension cellSize = new Dimension(20,20);

MyCenterPanel(CalendarPanel calendar, Dimension d, int sDate, int cDate) {

sD=sDate;

cD=cDate;

tf = new JTextField(20);

btn = new JButton("추가");

dp = new DaysPane(calendar, d); 

// 버튼에 Action 리스너를 등록한다.

btn.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

ta.append(tf.getText()+"\n");

dp.setScheduleNum(sD, cD, tf.getText());

}

});

ta = new JTextArea(7, 20);

add(new JLabel("아래 창에 문자열을 입력하고 버튼을 클릭하세요"));

add(tf);

add(btn);

add(new JScrollPane(ta));

}

}




이게 좀 길다.. 설명하기가 너무 복잡한데 형들 알아서 해석 좀 부탁할게. 일단 전체적으로 J프레임에 컨텐트팬을 붙이고나서 DaysPane의 인스턴스를 생성하다음 스케쥴셋 메소드를 호출하는거임.










public void setScheduleNum(int startday, int currentday, String s) {

cells[(startday-2)+currentday].setScheduleNum(s);

System.out.println(s);

}



이게 호출된 DaysPane의 스케쥴 셋 메소드거든.. 여기서 cells 배열은 CalendarCell(실질적인 달력의 6x7 셀임.)의 메소드를 호출하는거임.


println은 내가 정상적으로 값이 나오나 안나오나 시험해본건데 정상적으로 값은 나왔어 ㅇㅇ. 텍스트창에 문자 입력하면 그대로 콘솔에 떴음.






public void setScheduleNum(String s){

schedule.setText(s); // JLabel schedule

System.out.println(s);

repaint();



그리고 마지막으로 CalendarCell 클래스의 스케쥴 셋 메소드야...


여기서도 println에서는 제대로 값이 출력됐는데... setText메소드를 써서 대입을 했는데 셀에는 아무것도 안나타나더라 ㅠㅠ


이게 내 생각보다 좀 총체적인 문제일수도 있는데


혹시 형들 눈에 좀 뭐가 걸린다 싶으면 답변좀 부탁할게.... 진짜 머리 빠개지는거 같다.. 이거때문에 몇시간을 고민하는건지 ㅠ


오픈소스 받아서 수정하는게 이리 힘들줄이야...