1、"Wege"中,W、e的底部为基准线baseline,ascent是W的底部(基线)和顶部之间的距离,descent是g的底部和W的底部或任何字符的底部之间的距离。leading是文本的descent和邻接行的ascent之间的距离。字体高度是ascent、descent和leading的总和。advance是文本的长度
2、getHeight()度量字体高度,getBaselinePosition()度量ascent。
3、drawString、drawChar、drawChars绘制字符串、字符、字符数组
4、stringWidth()等度量字符宽度。
5、图
6、代码
完成显示两行字符,并在两行尾加上!,并且在第一行的Log的Lo下加上蓝色的下划线,这个线的高度没有超过g的下半部分。
MIDPCanvas.java
package test1;
import javax.microedition.lcdui.*;
public class MIDPCanvas extends Canvas implements CommandListener{
privateMidlet midlet;
privateCommand cmd_exit;
privateString stringline1,stringline2;
private charlineend;
private Fontfont;
publicMIDPCanvas(Midlet midlet ) {
try {
// Set up this canvas to listen to commandevents
stringline1=new String("Log-Log LINE 1") ;
stringline2=new String("第二行") ;
lineend='!';
font=Font.getFont(Font.FACE_PROPORTIONAL,Font.STYLE_BOLD,Font.SIZE_SMALL);
this.midlet=midlet;
cmd_exit=newCommand("退出",Command.EXIT,1);
addCommand(cmd_exit);
setCommandListener(this);
} catch(Exception e) {
e.printStackTrace();
}
}
public voidpaint(Graphics g) {
g.setColor(0, 0, 0);
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(0, 255, 0);
g.setFont(font);
g.drawString(stringline1, 0, 0, Graphics.TOP|Graphics.LEFT);
g.drawChar(lineend, font.stringWidth(stringline1)+1,0,Graphics.TOP|Graphics.LEFT);
g.drawString(stringline2,0,font.getHeight()+1,Graphics.TOP|Graphics.LEFT);
g.drawChar(lineend,font.stringWidth(stringline2)+1,font.getHeight(),Graphics.TOP|Graphics.LEFT);
g.setColor(0, 100,255);
g.fillRect(0,font.getBaselinePosition(),font.substringWidth(stringline1,0,2),font.getHeight()-font.getBaselinePosition());
}
protected void keyPressed(int keyCode) {
}
protected void keyReleased(int keyCode) {
}
protected void keyRepeated(int keyCode) {
}
protected void pointerDragged(int x, int y){
}
protected void pointerPressed(int x, int y){
}
protected void pointerReleased(int x, int y){
}
public voidcommandAction(Command command, Displayable displayable) {
if (command==cmd_exit){
midlet.exitApp();
}
}
}
Midlet.java
package test1;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class Midlet extends MIDlet {
privateDisplay display;
private MIDPCanvas midpcanvas;
publicMidlet(){
display=Display.getDisplay(this);
midpcanvas=newMIDPCanvas(this);
}
public voidstartApp() {
display.setCurrent(midpcanvas);
}
publicvoid pauseApp() {
}
public voidexitApp(){
destroyApp(true);
notifyDestroyed();
}
publicvoid destroyApp(boolean unconditional) {
}
}