2
문제와 관련,방법 - 자바 스레드 다른 스레드 액세스 (SWING)
내가 주 응용 프로그램에서 스레드를 시작 프로세스 A는 백그라운드에서 실행 말할 수와 그것의 말을 실 외부의 텍스트 상자를 업데이트 실행이 중지되면 실행되고 완료됩니다.
실행중인 스레드 내에서 스레드 외부의 텍스트 상자를 업데이트하는 코드는 어떻게 작성합니까?
문제와 관련,방법 - 자바 스레드 다른 스레드 액세스 (SWING)
내가 주 응용 프로그램에서 스레드를 시작 프로세스 A는 백그라운드에서 실행 말할 수와 그것의 말을 실 외부의 텍스트 상자를 업데이트 실행이 중지되면 실행되고 완료됩니다.
실행중인 스레드 내에서 스레드 외부의 텍스트 상자를 업데이트하는 코드는 어떻게 작성합니까?
텍스트 상자에 대한 포인터가 필요합니다. 스레드 수 없습니다 텍스트 상자를 업데이트 - 스윙에서 모든 GUI 명령은 이벤트 발송 스레드에서 실행해야합니다.
당신이 수행해야합니다 단지 팁 :
SwingUtilities.invokeLater (new Runnable(){
public void run(){
// draw textbox code
}
});
이 이벤트 발송 쓰레드
편집에 의해 실행 큐에 개체를 추가합니다 를 새로운의 Runnable() {내부에 .. .}는 익명 클래스이므로 외부 범위의 일반 변수를 사용할 수 없습니다. 변수를 final로 정의하거나 getter를 사용하여 텍스트 상자를 가져 오거나 일부 정적 필드를 통해 주소를 지정해야합니다.
어떻게 양식에 이미 그려져있는 텍스트 상자 속성을 호출합니까? – Melvin
오. 팁 고마워. runnable 클래스 내에서 정적 참조를 만들고 gui에서 텍스트 상자를 연결합니다. 같은 : Test.txt = jTextArea1 및 테스트 실행 내, 난 그냥 텍스트를 설정하려면 txt.setText() 사용하고 작동합니다. – Melvin
정적 일 필요는 없습니다. (익명 및 명명 된) 내부 클래스는 외부 클래스의 상태에 액세스 할 수 있습니다. – jackrabbit