Неправильно выбранный ряд возвращается с сенсорным устройством - PullRequest
0 голосов
/ 14 июня 2011

Я хочу работать с выбранной строкой таблицы, когда устройство является сенсорным в методе pointerPressed, и получаю неправильное значение: например, я щелкнул третью строку (PS: строка заголовка -1) и я получил 0 в качестве значения в System.out.println! И когда я нажимаю на другую строку, я получаю строку, которую я выбрал раньше! Так как же синхронизировать LWUIT с выбранной строкой?

1 Ответ

1 голос
/ 15 июня 2011

Хорошо, я нашел решение: в конструкторе я написал:

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);
        }
    }
...