Centralizar TextField no Form

9 respostas
B

quando adiciono textfield ao meu form, eles ficam todos na parte superior, teria como centralizar eles?

obrigado

9 Respostas

F

Infelizmente não tem como usando a API de alto nível. Para criar efeitos mais preciso deve usar API de baixo nível.

B

desculpe sou leigo “API de baixo nível” seriam bibliotecas de terceiros?

F

Blz amigo, trata-se da classe Canvas ou GameCanvas.

F

Para explicar melhor, classe consideradas de baixo nível fazem parte da seguinte hierarquia:
javax.microedition.lcdui.Screen e seus descendentes.
Já as de baixo nível, ou seja, aquelas classes que você tem mais “poder” :lol:
javax.microedition.lcdui.Canvas.

B

peguei exemplos de canvas, mas nao estou vendo como adicionar o textfield dentro do canvas… qual metodo que chamo?

obrigado desde já pelas ajudas

F

Em Canvas não tem como adicionar, terias que fazer o componente do zero. Porém a api LWUIT te permite isso, existem componentes prontos, e a forma de trabalhar é da mesma forma do swing. Dá uma olhada, não existem dificuldades em usar esta api. Inclusive esitem menus pronto ect… :lol:

P

brunoff:
quando adiciono textfield ao meu form, eles ficam todos na parte superior, teria como centralizar eles?

obrigado

Faltou vc olhar no javadoc da classe TextField que deriva de Item e diz que é possível através de setLayout.

M

Se quiser usar o Canvas aqui vai um exemplo:

package principal;

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class TesteCanvas extends MIDlet implements CommandListener {

  private MinhaCanvas myCanvas;
  private Command saida = new Command("Exit", Command.EXIT, 99);

  public TesteCanvas() {
    myCanvas = new MinhaCanvas();
    myCanvas.addCommand(saida);
    myCanvas.setCommandListener(this);
  }

  public void startApp() throws MIDletStateChangeException {
    Display.getDisplay(this).setCurrent(myCanvas);
    myCanvas.repaint();
  }

  public void destroyApp(boolean unconditional) 
      throws MIDletStateChangeException {
  }

  public void pauseApp() {
  }


  public void commandAction(Command c, Displayable s) {
    if(c == saida) {
      try {
        destroyApp(false);
        notifyDestroyed();
      } catch (MIDletStateChangeException ex) {
      }
    }
  }
  
}

class MinhaCanvas extends Canvas {
  private boolean prima = true;
  public void paint(Graphics g) {

    int larguraTela = getWidth();
    int alturaTela = getHeight();

    g.setColor(0xffffff);

    g.fillRect(0, 0, larguraTela, alturaTela);
    if(prima) {
      Font font = g.getFont();
      int alturaDoFont = font.getHeight();
      int larguraDoFont = font.stringWidth("Olá Mundo!");
      g.setColor(255, 0, 0);
      g.setFont(font);
      g.drawString("Olá Mundo!", (larguraTela - larguraDoFont)/2,
       (alturaTela - alturaDoFont)/2,
       Graphics.TOP|Graphics.LEFT);
      prima = false;
    }
  }

}

O que você precisaria é posicionar seu texto com o drawString

Se seu celular aceitar, vai ficar ainda melhor setando o canvas como fullscreen.

Abs

F

show de bola :smiley:

Criado 22 de setembro de 2010
Ultima resposta 22 de set. de 2010
Respostas 9
Participantes 4