이번 프로젝트를 진행하면서 SWT에 대해 많은 부분을 알게되었다.

많은 삽질을 통해 많은 걸 배웠는데. 정리 할 시간없이 내 기억속에서 사라져간 내용들이 많다.

먼저 동적 이미지 사용하기.

Swing은 동적 이미지 .gif를 불러오면 동적 이미지를 사용 할 수있다.

SWT는 gif파일을 불러오면 정지된 이미지를 불러온 것과 같은 이미지가 나온다. 결론은 움직이는 gif파일이 자기 역활을 못 한다.
이유는 생각 할 시간이 없었다. -_-;; 코피터지는 일정에 안되니까 되는 방법을 찾았다.

이미지를 순차적으로 그려주면 된다.
이걸 파일로 만들어 둔게 움직이는 이미지 파일이니까.

먼저 움직이는 이미지를 표현할 이미지들이 필요하다.

Composite을 상속받은 클래스를 생성하고 

 private void initImg() {
  this.setSize(35, 35);
  setLayout(null);

  img = new Image[6];

  img[0] = ImageFile.get_DeviceIcon_CoolingTowar_Run_FAN_1();
  img[1] = ImageFile.get_DeviceIcon_CoolingTowar_Run_FAN_2();
  img[2] = ImageFile.get_DeviceIcon_CoolingTowar_Run_FAN_3();
  img[3] = ImageFile.get_DeviceIcon_CoolingTowar_Run_FAN_4();
  img[4] = ImageFile.get_DeviceIcon_CoolingTowar_Run_FAN_5();
  img[5] = ImageFile.get_DeviceIcon_CoolingTowar_Run_FAN_6();


  if(!compo.isDisposed()){
   this.addPaintListener(new PaintListener() {
    public void paintControl(PaintEvent e) {
     if (null != frameImage) {
      e.gc.drawImage(frameImage, 0, 0);
     }
    }
   });

  }
 }
 public void setData(int ImageNum){
  if(ImageNum < 7){
   frameImage = img[ImageNum];
  }
 }
<이 코드는 프로젝트 진행중에 작성된 코드의 일부분이다.>

배열이 이미지를 등록해두고 Thread가 동작하면서 frameImage에 차래로 이미지를 끼우고 그 이미지를 Canvas에 있는 gc가 그려준다.

Thread의 모습

 private synchronized void threadExe() {
  while (flag) {
   try {
    Thread.sleep(500);
   } catch (InterruptedException e) {
    
   }
   try{

    if (!_fanMoveImage.isDisposed()) {
     _fanMoveImage.getDisplay().asyncExec(new Runnable() {
      public void run() {

       if (!_fanMoveImage.isDisposed()) {
        _fanMoveImage.setData(j);
        _fanMoveImage.redraw();
       }
       // }
      }
     });
    }
   }catch(SWTException e){
    e.printStackTrace();
   }
    j = j + 1;
    if (j == 6) {
    j = 0;
    }
  }
 }
 
 public void setCoolingTowerFanStatus(boolean flag){
  this.flag = flag;
  
 }

  _fanMoveImage.setData(j); 순차적으로 숫자를 setData에 넣음으로 frameImage에 이미지가 변경된다. 그리고 외부에서 flag를 제어 함으로 Thread를 멈출 수 있게한다.

SWT를 많이 사용해 보고 프로젝트를 진행한게 아니라 프로젝트 진행을 하면서 SWT에 대해서 배우고있다.

아직은 SWT의 장점을 잘 모르겠다. 익숙한 Swing으로 했다면 지금 불편하게 작성한 코드들을 좀더 쉽게 작성했지 않았나라는 생각을 한다.
SWT를 잘 다루는 사람들의 책을 읽고 그들의 방식대로 사용을 해 본후의 생각은 지금의 생각과 다를 거라고 생각을해본다.

Posted by 천류성

블로그 이미지
.....
천류성

태그목록

공지사항

Yesterday
Today
Total

달력

 « |  » 2024.3
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함