지금 스윙 컴포넌트 배우고 있는데
피자 주문메뉴를 만들려고 함..
클래스를 여러개 나눠서 만들고
메인클래스 하나 있고 이런식으로..
(1)일단 기본프레임을 띄울 클래스 하나를 만들고 거기다 텍스트필트 컴포넌트를 집어넣음..
(2)다른 클래스를 하나 만들어서 컴포넌트 액션이벤트를 실행하면 (1)의 클래스의 텍스트필드 값을 변경하고 싶다..
하지만 (2)의 클래스의 액션이벤트에 (1)의 클래스의 텍스트필드 컴포넌트 이름을 넣으면 오류가 난다..
어떻게 (2)의 클래스에서 (1)의 클래스의 텍스트필드 컴포넌트에 접근해서 값을 변경할수 있을까??? 좀알려줘 시발롬들아
(2)의 클래스에서
public void actionPerformed(ActionEvent e) {
if(small.isSelected() ){
PizzaSize = 5000;
result.setText("+5000");
temp = PizzaSize + 50000;
//여기다가 1의 텍스트필드 컴포넌트 집어넣고 싶다고
Text.setText(temp+""); //<== (1)의 컴포넌트라 (2)의 클래스의 액션퍼폼드에 집어넣으면 오류남.
}
질문 1)다른 클래스에서 다른 클래스의 컴포넌트에 접근할려면 어케해야되냐.
질문 2)다른 클래스에서 다른 클래스의 컴포넌트를 가져와서 지금 클래스의 변수랑 지지고볶고해서 값을 변경하려면 어케해야되냐.
1)그렇게 하면 안 됨. 다른 클래스 에서 다른 클래스에 멈버에 맘대로 접근할 수 있으면 그게 OOP냐 똥덩이가 주렁주렁 달린 절차식이지
2)대신 A클래스가 B클래스를 변경한다면, B클래스의 메서드를 호출해서 B가 자기 자신을 스스로 변경케해야함. 그게 일반적인 방법임.
이걸 하려면 A클래스는 B클래스의 참조를 가지고 있거나 or B클래스의 참조를 매개변수로 받는 메서드가 있고 그 안애서 B의 메서드를 호출하는 방식이어야함.
다른 말로 걍 getter setter 쓰셈 ㅎ