Shell 과 Display 의 차이

4705 단어 RCP 학습
디 스 플레이: 운영 체제 와 소통 하 는 다리 
   앞에서 말 했 듯 이 모든 swt 프로그램 은 처음에 디 스 플레이 대상 을 만들어 야 한다. 그 역할 은 swt 와 운영 체제 의 소통 을 담당 하 는 다리 이다.
   디 스 플레이 대상 은 주로 swt 와 운영 체제 의 통신 을 책임 집 니 다. swt 의 각종 호출 을 운영 체제 의 바 텀 호출 로 전환 시 키 고 운영 체제 가 swt 로 분 배 된 자원 을 제어 합 니 다.
   디 스 플레이 는 실제 적 으로 '막후 작업 자' 의 신분 을 담당 하고 있 습 니 다. swt 는 운영 체제 그래 픽 자원 에 대한 호출 을 차단 하지만 만 든 그래 픽 사용자 인터페이스 에 서 는 그림 자 를 볼 수 없습니다. 
import org.eclipse.swt.SWT; 
import org.eclipse.swt.widgets.Display; 
import org.eclipse.swt.widgets.Text; 
import org.eclipse.swt.widgets.Shell; 
import org.eclipse.swt.graphics.*;
class HelloSWT { 
    public static void main(String[] args) { 
        Display display=new Display();//    display  。 
        Shell shell=new Shell(display);//shell        
        shell.setLayout(null);         //  shell      
        Text hello=new Text(shell,SWT.MULTI); //                 
        shell.setText("Java    ");  //         
        shell.setSize(200,100);        //         
        Color color=new Color(Display.getCurrent(),255,255,255);//       
        shell.setBackground(color);   //          
        hello.setText("Hello, SWT World!

,SWT !");// hello.pack(); // //shell.pack(); // shell.open(); // while(!shell.isDisposed()){ // if(!display.readAndDispatch()){ // display display.sleep(); // } } display.dispose(); // display } }

Shell 의 setSize () 방법 은 표시 할 window 의 크기 를 지정 하 는 데 사 용 됩 니 다. 예제 코드 는 너비 200 픽 셀, 높이 200 픽 셀 입 니 다.
셸 의 open () 방법 은 디 스 플레이 장치 에 window 를 표시 하 는 데 사 용 됩 니 다. open 방법 을 사용 하지 않 으 면 window 가 표시 되 지 않 습 니 다. 이 window 는 메모리 에 만 들 어 졌 지만.
Shell 의 isDispose () 방법 은 window 가 닫 혔 는 지 여 부 를 판단 하 는 데 사 용 됩 니 다.
Display 의 read AndDispath () 방법 은 Shell 에서 발생 하 는 각종 사건 을 감청 하고 할당 하 며 해당 하 는 처리 프로그램 에 배포 합 니 다.
디 스 플레이 의 dispose () 프로그램 은 디 스 플레이 인 스 턴 스 를 만 들 때 사용 하 는 자원 을 방출 합 니 다.
 while(!shell.isDisposed()){  //주 창 이 닫 히 지 않 으 면 계속 순환 합 니 다. 
           if(!display.readAndDispatch()){  //하면, 만약, 만약... 
            display.sleep();    //휴면 
            } 
3.Hello World 
3.1Swt 기초 개념: 
3.1.1 모든 내용 은 디 스 플레이 대상 을 통 해 출력 되 고 보통 한 프로그램 에 디 스 플레이 대상 만 있 습 니 다. 
3.1.2 창 을 Shell 이 라 고 합 니 다. 
3.2 프로젝트 를 만 들 고 Swt 프로젝트 를 참조 합 니 다. 
New-->Java Project 
새로 만 든 프로젝트 에서 오른쪽 단 추 를 누 르 고 Properties 를 선택 하여 자바 Build Path 를 수정 합 니 다. 
옵션 카드 는 Projects - -> Add 를 선택 하고 방금 가 져 온 swt 프로젝트 를 선택 하 십시오. 이 swt 프로젝트 가 열 려 있 는 상 태 를 확보 해 야 합 니 다. 
선택 하면 swt 가방 의 종 류 를 사용 할 수 있 습 니 다. 
3.3 HelloWorld 클래스 생 성: 
New-->Class 
클래스 이름 을 입력 하고 main 함 수 를 만 들 려 면 선택 하 십시오. 
3.4 디 스 플레이 와 셸 만 들 기 
Display display = new Display(); 
Shell shell = new Shell(display) 
3.5 셸 제목 표시 줄 텍스트 설정 
shell.setText("Hello world!"); 
3.6 창 보이 기 
shell.open() 
실행 해 보 세 요. 화면 에 있 는 창 이 스 쳐 지나 가 아무것도 보이 지 않 았 습 니 다. 셸. open 이 실 행 된 후에 프로그램 이 종료 되 었 기 때문에 창 이 자 연 스 럽 게 사 라 졌 습 니 다. 
3.7 셸. open () 다음 에 순환 을 해서 기 다 려 보 세 요. 
for(;;) { 
try { 
Thread.sleep(1000); 
} catch (InterruptedException e) { 


다시 실행 하면 창 이 나타 나 는 것 을 볼 수 있 지만 어떤 이벤트 도 응답 하지 않 습 니 다. 
3.8 응답 하지 않 는 이 벤트 는 순환 중 에 이 벤트 를 처리 하지 않 았 기 때문에 순환 을 수정 하고 디 스 플레이 클래스 를 호출 하 는 이벤트 읽 기 배포 함수 로 바 꾸 면 이벤트 에 응답 할 수 있 습 니 다. 
while (!shell.isDisposed()) { 
     if (!display.readAndDispatch()) { 
       display.sleep(); 
     } 

3.9 프로그램 이 실 행 될 때 자원 을 회수 합 니 다.
display.dispose(); 
swt 에는 두 가지 원칙 이 있 습 니 다. 
3.9.1 누가 dispose 를 만 들 었 는 지 는 메모리 할당 회수 처럼 display 가 만 들 어 졌 기 때문에 dispose 가 되 어야 합 니 다. 셸 은 창 을 닫 을 때 dispose 가 되 었 기 때문에 dispose 를 사용 할 필요 가 없습니다. 
3.9.2 부모 구성 요소 dispose 시 모든 하위 구성 요 소 를 dispose 합 니 다. 
display.readAndDispatch   이벤트 읽 기 배포 함수
운영 체제 의 이벤트 대기 열 에 있 는 이 벤트 를 읽 고,
그것 을 파견 하고 코드 를 되 돌려 줍 니 다 >
할 일이 더 많 거나 가짜 가 있 을 수 있 습 니 다.
호출 자가 다른 사건 에 놓 여 있 을 때 까지 잘 수 있다 면
이벤트 큐.
시스템 이벤트 대기 열 검사 외 에 도 이 방법 은
스 레 드 간 정보 가 있 는 지 확인 하 십시오.
또는 asyncexec () ) 가 처 리 를 기다 리 고 있 습 니 다.
그래서 그들 은 돌아 가기 전에 처리 했다.
display.sleep();
사용자 인터페이스 스 레 드 EM > < 즉,
한 나라 에 두 면 CPU 주 기 를 소모 하지 않 습 니 다)
한 사건 이나 다른 깨 어 날 때 까지
private ActionContributionItem createActionContributionItem(IAction action){
 ActionContributionItem aci = new ActionContributionItem(action);
 aci. setMode (ActionContributionItem. MODE FORCE TEXT);/그림 + 텍스트 표시
 return aci;
}

좋은 웹페이지 즐겨찾기