Como aumentar a Fonte de alguns?

Estou tendo problema com o tamanho da fonte no meu celular … o maior problema é que quero elas bem maiores do que estão … quando usei para aumentar a fonte em tipos List … não tive nenhum … assim como, quando aumentei a fonte de StringItem e ChoiceGroup … mas ao tentar aumentar a letra que aparecia no TextField não encontrei uma solução …

alguém saberia como aumentar a fonte num TextField???

[quote=Norxs]Estou tendo problema com o tamanho da fonte no meu celular … o maior problema é que quero elas bem maiores do que estão … quando usei para aumentar a fonte em tipos List … não tive nenhum … assim como, quando aumentei a fonte de StringItem e ChoiceGroup … mas ao tentar aumentar a letra que aparecia no TextField não encontrei uma solução …

alguém saberia como aumentar a fonte num TextField???[/quote]

Não há como.

te tem … só que tem que renderiza … queria ver se tinha um jeito mais fácil [:(]

Você então deve saber tanto como eu que não há como fazer isto, usando o componente TextField. Agora se for partir para fazer o SEU, a situação é diferente. Respondi o que perguntou e a pergunta foi sobre TextField, portanto a resposta continua a mesma. Não é possível.

[code]import javax.microedition.lcdui.CustomItem;
import javax.microedition.lcdui.Font;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.TextField;

public class MTextField extends CustomItem {
private TextField tf = new TextField(null, null, 80, TextField.ANY);
private String string;
private Font font;

  public MTextField(){
	  super(null);
	  this.string = new String("");
	  this.font = null;
  }
  
  public void paint(Graphics g, int w, int h) {
	  int wMin = 0;
	  int hMin = 0;
	  int wMax = w-1;//tf.getPreferredWidth()-1;
	  int hMax = h-1;//tf.getPreferredHeight()-1;
	  g.drawLine(wMin, hMin, wMin, hMax);
	  g.drawLine(wMin, hMin, wMax, hMin);
	   
	  g.drawLine(wMax-1, hMin, wMax-1, hMax);
	  g.drawLine(wMin, hMax, wMax, hMax);
	  if(font!=null) g.setFont(font);
	  g.drawString(string,1,0,0);  
      //Paint ur own stuff here
  }
  
  public Font getFont() {
	  return font;
  }

  public void setFont(Font font) {
	  this.font = font;
  }	
	
  public String getString() {
	  return string;
  }

  public void setString(String string) {
	  this.string = string;
  }

  protected int getPrefContentHeight(int height){
	  return tf.getPreferredHeight();  
  }
        
  protected int getPrefContentWidth(int width){
	  return tf.getPreferredWidth();  
  }
 

  protected int getMinContentHeight(){
	  return tf.getMinimumHeight();
  }

  protected int getMinContentWidth() {
	  return tf.getMinimumWidth();
  }
  
  protected  void keyPressed(int keyCode){
	  //write ur code here to do stuff
	  if(keyCode==-8)
		  string = string.substring(0, string.length()-1);
	  else
		  string += String.valueOf(keyName(keyCode));
      repaint();
  }
  
  private char keyName(int keyCode){
	  switch(keyCode){
	  case 49:
		  return '1';
	  case 50:
		  return '2';
	  case 51:
		  return '3';
	  case 52:
		  return '4';
	  case 53:
		  return '5';
	  case 54:
		  return '6';
	  case 55:
		  return '7';
	  case 56:
		  return '8';
	  case 57:
		  return '9';
	  case 48:
		  return '0';
	  }
	  
	  return ' ';
  }

}
[/code]

só estou com o problema de que não consigo capturar outras teclas … só capturo as com número … alguém sabe outra função além da protected void keyPressed(int keyCode) … para capturar as outras teclas???

Quanto as teclas:

Basta você saber o código (keycode) das outras que não sejam numéricas.

Outra forma de trabalhar isso é sobrepondo o método traverse da classe CustomItem. Eu consegui trabalhar algumas teclas a partir dele… é bem chatinho de trabalhar com ele, demorei entendê-lo.

Veja um exemplo:

    /*Abstract da CustomItem. Movimena uma lista para baixo de acordo com as teclas precionadas.*/
    public boolean traverse( int dir, int viewportWidth, int viewportHeight,  int[] visRect_inout ){
        switch(dir){
            case Canvas.UP:
            case Canvas.LEFT:
                if( itemSelecionado > 0 ){
                    --itemSelecionado;
                    notifyStateChanged();
                } else {
                    itemSelecionado = num-1;
                    notifyStateChanged();
                }
                break;
            case Canvas.DOWN:
            case Canvas.RIGHT:
                if( itemSelecionado < num-1 ){
                    ++itemSelecionado;
                    notifyStateChanged();
                } else {
                    itemSelecionado = 0;
                    notifyStateChanged();
                }
                break;
            case NONE:
                return true;
        }
        makeSelectedVisible();
        repaint();
        return true;
    }

Repare que com a classe Canvas eu consigo capturar outras teclas como Canvas.DOWN, Canvas.UP, etc.

Quanto ao tamanho das fontes:

Há uma forma de utilizar a fonte do tamanho que você deseja em classes herdadas da CustomItem ou da Canvas… porém é complicado, você terá que fazer uma imagem com todos os caracteres do tamanho e estilo que você deseja, de preferência com a mesma largura para todos. Depois crie uma classe Fonte onde no construtor você carrega a imagem que contém todos os caracters. Crie um método getCaracter(char c), neste método ponha um switch com case para cada caracter e em cada case você recorta o caracter desejado da imagem que contém todos os caracteres. Para fazer o recorte da imagem você deve saber em qual pixel começa cada caracter e qual sua largura e altura e especificar isso nos cases… daí você pode fazer diversas outras coisas, estou te dando a dica inicial.

Também pode fazer uma imagem com todos os caracteres na mesma sequência que a tabela ASCII e capturar a imagem do caracter desejado passando como atributo o byte do caracter que você quer… e por aí vai. Ja fiz das duas formas, esta segunda é bem mais eficiente. Tem um link da Sun que ensina isso, se eu achar postarei aqui.

hum … interessante … mas tem um problema de que eu estou desenvolvendo para um htc … e esse mobile tem um tecla (semelhante ao blackberry) … mas tem o problema de que algumas teclas não são capturadas quando uso o keyPressed … são duas na verdade … o shift e o alt …

No BlackBerry por exemplo, certas teclas você não consegue capturar a não ser que faça o aplicativo usando a API natual ddele que, no caso do BlackBerry, é a RIMlet.