Como aumentar a Fonte de alguns?

7 respostas
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???

7 Respostas

P

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???

Não há como.

Norxs

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

P

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.

Norxs
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 ' ';
	  }
			  
}

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???

JavaES

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.

Norxs

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 …

JavaES

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.

Criado 5 de junho de 2008
Ultima resposta 11 de jun. de 2008
Respostas 7
Participantes 3