Ajuda para pegar string em uma classe ja pronta

2 respostas
vfmartins

Bom dia

estou utilizando a classe abaixo (encontrada pronta num outro tópico)
essa classe faz uma tabela com uma listagem de informações

problema:
eu preciso pegar a string do item selecionado na listagem e gravar em uma variavel
só que eu não sei onde ta apontando esse item selecionado

agradeço mto se alguém se dispor a ajudar!!

import java.util.Vector;
import javax.microedition.lcdui.*;

class Relatorio extends CustomItem {

    private int minContentWidth;
    private int minContentHeight;
    private int prefContentHeight;
    private int prefContentWidth;
    private String title = "";
    private boolean titleBorder;
    private boolean titleFillColor;
    private int[] titleColorText;
    private int[] titleColorBack;
    private int[] titleColorBorder;
    private Font titleFont;
    private Font titleHeader;
    private short titleAlignment;
    public static final short LEFT = 0;
    public static final short CENTER = 1;
    public static final short RIGHT = 2;
    public String[] columnsText;
    public int[] columnsPercents;
    private boolean columnsBorder;
    private boolean columnsFillColor;
    private int[] columnsColorText;
    private int[] columnsColorBack;
    private int[] columnsColorBorder;
    private Font columnsFont;
    private short columnsAlignment;
    private Font textFont;
    private int[] textColor;
    private boolean textGridH;
    private boolean textGridV;
    private int[] textLinesColor;
    private Vector[] textData;
    private short textAlignment;
    private int[] posYInicial;
    private int[] posYFinal;
    private int indice;
    private Image imgBrasao;
    private int[] tamColunas;

    public Relatorio(int width, int height) {
       super("");

       titleFont = Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_BOLD, Font.SIZE_LARGE);
       titleColorText = new int[]{230, 230, 230};
       columnsColorText = new int[]{40, 40, 40};
       columnsFont = Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_PLAIN, Font.SIZE_MEDIUM);
       textFont = Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_PLAIN, Font.SIZE_SMALL);
       textColor = new int[]{0, 0, 0};
       titleAlignment = CENTER;
       titleBorder = true;
       titleColorBorder = new int[]{0, 0, 0};
       titleFillColor = true;
       titleColorBack = new int[]{50, 50, 50};
       prefContentHeight = height;
       prefContentWidth = width;
       minContentHeight = height;
       minContentWidth = width;
   }

   public void setImgBrasao(Image imgBrasao) {
       this.imgBrasao = imgBrasao;
   }

   public void setTitle(String title) {
       this.title = title;
   }

   public void setTitleAlignment(short alignment) {
       this.titleAlignment = alignment;
   }

   public void setTitleFont(Font titleFont) {
       this.titleFont = titleFont;
   }

    public void setTitleFontHeader(Font titleFont) {
        this.titleHeader = titleFont;
    }

    public void setTitleBorder(boolean titleBorder) {
        this.titleBorder = titleBorder;
    }

    public void setTitleFillColor(boolean titleFillColor) {
        this.titleFillColor = titleFillColor;
    }

    public void setTitleColorText(int[] color) {
        this.titleColorText = color;
    }

    public void setTitleColorBack(int[] color) {
        this.titleColorBack = color;
    }

    public void setTitleColorBorder(int[] color) {
        this.titleColorBorder = color;
    }

    public void setColumns(String[] columns) {
        this.columnsText = columns;
    }

    public void setColumnsPercents(int[] percents) {
        this.columnsPercents = percents;
        tamColunas = new int[columnsPercents.length];
        int total = 0;
        for (int i = percents.length-1; i >= 0; i--) {
            tamColunas[i] = ((prefContentWidth) / 100) * percents[i];
            total += tamColunas[i];
        }
        int sobra = ((prefContentWidth) - total) / 3;
        for (int i = percents.length-1; i >= 0; i--) {
            tamColunas[i] += sobra;
        }
    }

    public void setColumnsBorder(boolean columnsBorder) {
        this.columnsBorder = columnsBorder;
    }

    public void setColumnsFillColor(boolean fillColor) {
        this.columnsFillColor = fillColor;
    }

    public void setColumnsColorText(int[] color) {
        this.columnsColorText = color;
    }

    public void setColumnsColorBack(int[] color) {
        this.columnsColorBack = color;
    }

    public void setColumnsColorBorder(int[] color) {
        this.columnsColorBorder = color;
    }

    public void setColumnsFont(Font fontColumns) {
        this.columnsFont = fontColumns;
    }

    public void setColumnsAlignment(short alignment) {
        this.columnsAlignment = alignment;
    }

    public void setTextFont(Font font) {
        this.textFont = font;
    }

    public void setTextData(Vector[] data) {
        this.textData = data;
    }

    public void setTextAlignment(short alignment) {
        this.textAlignment = alignment;
    }

    public void setTextColor(int[] color) {
        this.textColor = color;
    }

    public void setTextLineColor(int[] color) {
        this.textLinesColor = color;
    }

    public void setTextGridH(boolean grid) {
        this.textGridH = grid;
    }

    public void setTextGridV(boolean grid) {
        this.textGridV = grid;
    }

    protected int getMinContentWidth() {
        return minContentWidth;
    }

    protected int getMinContentHeight() {
        return minContentHeight;
    }

    protected int getPrefContentWidth(int arg0) {
        return prefContentWidth;
    }

    protected int getPrefContentHeight(int arg0) {
        return prefContentHeight;
    }

    protected void paint(Graphics g, int largura, int altura) {
        int aux = 0;
        g.setColor(255, 255, 255);
        g.fillRect(0, 0, largura, altura);
        int tamTitulo = Math.max( (titleFont.getHeight() + 2), (imgBrasao == null?0:imgBrasao.getHeight()));
        if (titleFillColor) {
            g.setColor(titleColorBack[0], titleColorBack[1], titleColorBack[2]);
            g.fillRect(0, 0, largura, tamTitulo);
            if (imgBrasao != null) {
                g.drawImage(imgBrasao, 0, 0, Graphics.LEFT|Graphics.TOP);
            }
        }
        g.setColor(titleColorText[0], titleColorText[1], titleColorText[2]);
        g.setFont(titleFont);
        if (titleAlignment == LEFT)
            g.drawString(title, largura/2, tamTitulo/2 - titleFont.getHeight()/2, Graphics.LEFT|Graphics.TOP);
        else if (titleAlignment == CENTER)
            g.drawString(title, largura/2, tamTitulo/2 - titleFont.getHeight()/2, Graphics.HCENTER|Graphics.TOP);
        else
            g.drawString(title, largura/2, tamTitulo/2 - titleFont.getHeight()/26, Graphics.RIGHT|Graphics.TOP);
        if (titleBorder) {
            g.setColor(titleColorBorder[0], titleColorBorder[1], titleColorBorder[2]);
            g.drawRect(0, 0, largura, tamTitulo);
        }
        aux = tamTitulo + 4;
        if (columnsFillColor) {
            int auxW = 0;
            g.setColor(columnsColorBack[0], columnsColorBack[1], columnsColorBack[2]);
            for (int i = 0; i < columnsText.length; i++) {
                g.fillRect(auxW - 1, aux, tamColunas[i]-1, titleHeader.getHeight() + 2);
                auxW += tamColunas[i];
            }
        }
        int auxW = 0;
        if (columnsBorder) {
            g.setColor(columnsColorBorder[0], columnsColorBorder[1], columnsColorBorder[2]);
            for (int i = 0; i < columnsText.length; i++) {
                g.drawRect(auxW - 1, aux, tamColunas[i]-1, titleHeader.getHeight() + 2);
                auxW += tamColunas[i];
            }
        }
        g.setColor(columnsColorText[0], columnsColorText[1], columnsColorText[2]);
        g.setFont(titleHeader);
        auxW = 0;
        for (int i = 0; i < columnsText.length; i++) {
            if (columnsAlignment == LEFT)
                g.drawString(columnsText[i], auxW, aux, Graphics.LEFT|Graphics.TOP);
            else if (columnsAlignment == RIGHT)
                g.drawString(columnsText[i], auxW + tamColunas[i] - 1, aux, Graphics.RIGHT|Graphics.TOP);
            else
                g.drawString(columnsText[i], (auxW + tamColunas[i]/2), aux, Graphics.HCENTER|Graphics.TOP);
            auxW += tamColunas[i];
        }
        aux += columnsFont.getHeight() + 8;
        g.setColor(0, 0, 0);
        g.drawLine(0, aux, largura, aux);
        if (textGridV) {
            g.setColor(textLinesColor[0], textLinesColor[1], textLinesColor[2]);
            auxW = 0;
            for (int i = 0; i < tamColunas.length-1; i++) {
                auxW += tamColunas[i];
                g.drawLine(auxW, aux, auxW, aux + (textFont.getHeight() * textData.length));
            }
        }
        if (textGridH) {
            g.setColor(textLinesColor[0], textLinesColor[1], textLinesColor[2]);
            int aux2 = aux;
            for (int i = 0; i < textData.length; i++) {
                aux2 += textFont.getHeight();
                g.drawLine(0, aux2, largura, aux2);
            }
        }
        posYInicial = new int[textData.length];
        posYFinal = new int[textData.length];
        g.setFont(textFont);
        for (int i = 0; i < textData.length; i++) {
            Vector dados = textData[i];
            auxW = 0;
            posYInicial[i] = aux;
            if (indice == i) {
                g.setColor(230, 230, 230);
                g.fillRect(0, aux+1, largura, textFont.getHeight()-1);
            }
            aux += textFont.getHeight();
            posYFinal[i] = aux;
            for (int j = 0; j < tamColunas.length; j++) {
                g.setColor(textColor[0], textColor[1], textColor[2]);
                if (textAlignment == LEFT) {
                    g.drawString(dados.elementAt(j).toString(), auxW + 2, aux, Graphics.LEFT|Graphics.BOTTOM);
                }
                auxW += tamColunas[j];
            }
        }
    }

    protected void pointerPressed(int x, int y) {
        for (int i = 0; i < posYFinal.length; i++) {
            if (y >= posYInicial[i] && y <= posYFinal[i]) {
                indice = i;
                repaint();
                return;
            }
        }
    }

    protected void pointerDragged(int x, int y) {}

    protected void pointerReleased(int x, int y) {}

    protected boolean traverse(int dir, int viewportWidth, int viewportHeight, int[] visRect_inout) {
        if (dir == 6) {
            if (indice < textData.length) {
                indice++;
                repaint();
                return true;
            } else {
                return false;
            }
        } else if (dir == 1) {
            if (indice > 0) {
                indice--;
                repaint();
                return true;
            } else {
                return false;
            }
        } else {
            return true;
        }
    }

    protected void traverseOut() {
        indice  = 0;
        repaint();
    }
}

2 Respostas

vfmartins

pessoal,

eu sei que é nessa linha que ele adiciona o valor na tela:

mas como eu faço para descobrir que essa linha foi selecionada e vincular com o valor??

continuo aguardando sugestões!!

obrigado

vfmartins

Bom dia pessoal, aparentemente ninguem se interessou mto por esse tópico, mas como eu consegui encontrar a solução, vou posta-la aqui, pois se algum dia alguém precisar a solução vai estar disponível.

Eu fiz seguinte: na linha abaixo (que define o item selecionado) eu defino que autoriza para armazenar string na variavel

Aí na linha abaixo (que printa na tela) eu verifico se autoriza armazenar

Criado 3 de fevereiro de 2010
Ultima resposta 4 de fev. de 2010
Respostas 2
Participantes 1