日期:2014-05-20  浏览次数:20806 次

canvas 文字居中显示问题
canvas 文字居中显示不出来,希望牛人解答.
代码如下:
import javax.microedition.midlet.*; 
import javax.microedition.lcdui.*; 
public class Canvas_Test extends MIDlet implements CommandListener{
  private Display display;  
  private myCanvas canvas;
  public Canvas_Test(){
   
  }
  public void startApp(){
canvas=new myCanvas();
display=Display.getDisplay(this);
display.setCurrent(canvas);
  }
  public void pauseApp(){
  }
  public void destroyApp(boolean unconditional){
  }
  public void commandAction(Command c,Displayable d){
  }

  //定义一个Canvas类
  public class myCanvas extends Canvas{
Font f;
  public void myCanvas(){
  }
  public void showNotify(){
  }
  public void hideNotify(){
  }
  public void paint(Graphics g){//canvas抽象类中必带的方法
 
  g.setColor(0,255,88);
  g.fillRect(10,10,getWidth()-20,getHeight()-20); //绘制矩形
  g.setColor(255,255,255); //设置颜色
  g.drawString("Canvas Test",(getWidth()-f.stringWidth("CanvasTest"))/2,120,g.BOTTOM|g.LEFT); //在指定的位置显示文本
  }
  }
}

eclispse只显示背景色,没有在((getWidth()-f.stringWidth("CanvasTest"))/2,120)这个位置显示Canvas Test
什么问题,希望得到解答.


------解决方案--------------------
font f没有初始化。
------解决方案--------------------
Font f=Font.getDefaultFont();
屏幕的宽度和stringWidth求的字符串宽度是一样的。
------解决方案--------------------
g.drawString("Canvas Test",(getWidth()-20)/2,(getHeight()-20)/2,g.BOTTOM|g.LEFT);
试试
------解决方案--------------------
Font没有初始化,如楼上几位所说,
至于你认识像素和字符,我个人认为,跟像素没有关系,你可以单方面从API中的getwidth()看,首先它返回的是int型,这毋庸置疑吧?,而Fonts类中的stringWidth()方法返回类型也是int型,希望对你有所帮助