2011-06-14 2 views
0

기기가 pointerPressed 방법의 터치 인 경우 테이블의 선택된 행으로 작업하고 싶습니다. 잘못된 값입니다. 예를 들어 세 번째 행 (예 : PS : 헤더 행은 -1입니다.) 그리고 System.out.println의 값으로 0이 있습니다! 그리고 다른 행을 클릭하면 이전에 선택한 행을 얻습니다! LWUIT를 선택한 행과 동기화하는 방법은 무엇입니까?터치 장치가 잘못 선택 된로 돌아 가기

+0

I 루프 테이블 성분 (짧은 idxComp = 3; idxComp

답변

1

좋아, I는 솔루션을 발견 생성자 I 쓴 :

for (short idxComp=3; idxComp<tList.getComponentCount(); idxComp++) 
     { 
      tList.getComponentAt(idxComp).addFocusListener(this); 
     } 
isTableSelected = false; 

그리고 여기에 구현 된 방법이다 :

public void pointerPressed(int x, int y) 
    { 
     int startX, startY, endX, endY, nbComps; 
     nbComps = tList.getComponentCount(); 
     startX = tList.getComponentAt(3).getAbsoluteX(); 
     endX = tList.getComponentAt(5).getAbsoluteX() + tList.getComponentAt(5).getWidth(); 
     startY = tList.getComponentAt(3).getAbsoluteY(); 
     endY = tList.getComponentAt(nbComps-1).getAbsoluteY() + tList.getComponentAt(nbComps-1).getHeight(); 
     if ((x >= startX && x <= endX) && (y >= startY && y <= endY)) 
     { 
      isTableSelected = true; 
      if ((x >= selectedComp.getAbsoluteX() && x <= (selectedComp.getAbsoluteX()+selectedComp.getWidth())) && (y >= selectedComp.getAbsoluteY() && y <= (selectedComp.getAbsoluteY()+selectedComp.getHeight()))) 
       afficheFicheCredit(selectedRow); 
     } 
    } 
    public void focusGained(Component comp) { 
     tList.repaint(); 
     selectedComp = tList.getComponentAt(3*selectedRow+3); 
     if (isTableSelected) 
     { 
      isTableSelected = false; 
      selectedRow = tList.getSelectedRow(); 
      afficheFicheCredit(selectedRow); 
     } 
    }