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型,希望对你有所帮助