0

デバイスがメソッドのタッチ 1 である場合にテーブルの選択された行を操作したいのですpointerPressedが、間違った値が表示されます: たとえば、3 行目 (PS: ヘッダー行は -1 ) をクリックしました。System.out.println!の値として 0 を取得しました。別の行をクリックすると、前に選択した行が表示されます。では、LWUIT を選択した行と同期する方法は?

4

1 に答える 1

1

わかりました、私は解決策を見つけました:私が書いたコンストラクターで:

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);
        }
    }
于 2011-06-15T06:28:37.683 に答える