[답변]텍스트필드의 문자열을 텍스트 에어리어로 옮기는데요...


[ 다음 글들 ] [ 이어서 글올리기(답하기) ] [ 자바 묻고 답하기 ]

글쓴이 :조신제 1999년 7월 06일 15:34:14

In Reply to: 텍스트필드의 문자열을 텍스트 에어리어로 옮기는데요... posted by 박현아 on 1999년 7월 05일 20:16:55:

import java.awt.*;
import java.awt.event.*;



class Test extends Frame implements TextListener{
TextField textfield;
TextArea textarea;


Test() {


setLayout(new BorderLayout());
TextField textfield = new TextField("hi"); <-- 이부분
TextArea textarea = new TextArea(); <-- 이부분
add(textfield, "North");
add(textarea, "Center");
textfield.addTextListener(this);


setSize(300,300);
doLayout();
setVisible(true);
}


public void textValueChanged(TextEvent e) {


String string = new String();
string = textfield.getText();
textarea.append(string);
}


public static void main(String args[]) {
new Test();
}
}


위에서 '이부분'이라고 표시해 둔 곳이 문제죠...
textfield와 textarea의 변수선언이 문제가 된 프로그램이네요...
위 프로그램을 보시면
textfield, textarea를 instance variable로 선언해 놓고 생성자 모듈 내에서
또 textfield와 textarea 변수를 만들게 되면 변수의 유효 영역은 생성자 모듈 내에서만
가능하게 되겠지요..
그러니까 생성자 모듈내에서 새롭게 TextField, TextArea객체를 가리키는 같은 이름의 레퍼런스를 만들면
instance variable의 textarea나 textfield가 그 객체를 가리키는 것이 아니라 모듈내에서
새로 만든 textarea와 textfield 가 객체를 가리킨다는 것이지요..


그래서 textValueChanged 메소드에서 getText() 메소드가 동작을 하지 못하는 것이죠...
textValueChanged 모듈의 textfield와 textarea는 아무런 객체도 가리키고 있지 못한 상태니까요..


그러니까 프로그램의 생성자 모듈에 있는


TextField textfield = new TextField("hi");
TextArea textarea = new TextArea();


를 아래와 같이 바꾸면 되죠..


textfield = new TextField("hi");
textarea = new TextArea();





다음 글들:



이어서 글올리기(답하기)

이름:
E-Mail:
제목:
내용:
HTML 태그 포함 여부: HTML 문서일 경우 체크
관련 URL(선택):
URL 제목(선택):
관련 이미지 URL:


[ 다음 글들 ] [ 이어서 글올리기(답하기) ] [ 자바 묻고 답하기 ]