class TextWindow extends JFrame {
MyCenterPanel a= new MyCenterPanel();
Container contentPane;
TextWindow() {
setTitle("일정 추가");
contentPane = getContentPane();
contentPane.add(a, BorderLayout.CENTER);
setSize(300,300);
setVisible(true);
}
class MyCenterPanel extends JPanel {
JTextField tf;
JButton btn;
JTextArea ta;
MyCenterPanel() {
tf = new JTextField(20);
btn = new JButton("추가");
// 버튼에 Action 리스너를 등록한다.
btn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ta.append(tf.getText()+"\n");
}
});
ta = new JTextArea("hello", 7, 20);
add(new JLabel("아래 창에 문자열을 입력하고 버튼을 클릭하세요"));
add(tf);
add(btn);
add(new JScrollPane(ta));
}
}
}
이게 텍스트필드에 값 입력해서 버튼 누르면 텍스트 에이리어에 복사되는 소스거든?
이런식으로 말야 ㅇㅇ
근데 내가 지금 저기 달력에 셀을 더블클릭해서 저 창을 띄우는건 문제가 아닌데
텍스트 필드에 있는 값을 셀 한중간에다가 어떻게 옮기느냐 이게 지금 문제야.
Textarea는 지울거고 텍스트필드에 있는 값을 바깥 클래스에서 어떻게 참조해야할까?
TextWindow 인스턴스를 만들면 거기 있는 변수만 참조할수 있잖아.
스윙 잘 안써서 잘 모르는데 Panel에서 필드로 달력 셀 객체 가진다음에 생성자 파라미터로 전달받아서 panel 생성할 때 초기화하면 참조는 할 수 있겠네
두번째 클래스 마이센터 판넬에서 달력 셀 객체를 생성해야되는거야?
컴포넌트 생성을 전담하는 팩토리 클래스를 하나 만들어서 거기서 모든 객체를 생성하고 객체를 설정해주면 되는데, 보통 DI라고 할 걸
간단하게 하려면 main 메서드에서 모든 객체를 생성하고 거기서 주입해주면 되지
어떤 걸 필드로 포함할 지는 컴포넌트와 컨테이너 간의 Has-a 관계를 생각해보고 결정