📄 stringlayout.java
字号:
package com.viewlinecn.netflat.base;
import javax.microedition.lcdui.*;
import java.util.Vector;
/**
* @author wujiaojun
* Email:wujiaojun@qq.com
* 2008-5-13上午11:47:58
*/
public class StringLayout {
public int layoutWidth, layoutHeight, layoutX, layoutY;
private int lineGap;
private String text;
private int fontHeight;
private int lineCount;
private Vector line;
private Font font =Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_PLAIN,Font.SIZE_SMALL);
private int currLine = 0;
public boolean isChange = false;
private int rgbcolor=0xffffff;
public StringLayout() {}
/**
* 构造函数<br>
* Str:布局中的字符串<br>
* X:布局的左上角位置<br>
* Y:布局的右上角位置 <br>
* LayoutX:布局顶点X<br>
* LayoutY:布局顶点Y<br>
* LayoutWidth:布局宽度<br>
* LayoutHeight:布局高度<br>
* Gap:各行之间的空隙
*/
public void init(String Str, int LayoutX, int LayoutY, int LayoutWidth,
int LayoutHeight, int Gap) {
text = Str+".";
layoutX = LayoutX;
layoutY = LayoutY;
layoutWidth = LayoutWidth;
layoutHeight = LayoutHeight;
lineGap = Gap;
int begin = 0;
fontHeight = font.getHeight();
lineCount = 0;
line = new Vector(5, 2);
for (int i = 0; i < text.length(); i++) {
char ch = text.charAt(i);
if (font.stringWidth(text.substring(begin, i + 1)) >= layoutWidth
|| i == text.length() - 1 || ch == '\n') { // layoutWidth-3中的3为偏移值
line.addElement(text.substring(begin, i+1));
if (ch == '\n')
begin = i + 1;
else
begin = i;
lineCount++;
}
}
}
/**
* 画出字符串
*/
public void draw(Graphics g) {
if(text==null)return;
int i1 = g.getClipX();
int j1 = g.getClipY();
int k1 = g.getClipWidth();
int l1 = g.getClipHeight();
g.setColor(rgbcolor);
g.setClip(layoutX, layoutY, layoutWidth, layoutHeight);
g.setFont(font);
for (int i = currLine; i < line.size(); i++) {
String s = (String) line.elementAt(i);
g.drawString(s, layoutX, layoutY + (i - currLine) * (fontHeight + lineGap), 0);
}
g.setClip(i1, j1, k1, l1);
isChange = false;
}
public boolean isNext() {
if (currLine < lineCount - 1)
return true;
else
return false;
}
public void next() {
if (currLine < lineCount - 1) {
currLine++;
isChange = true;
}
}
public boolean isPrev() {
if (currLine > 0)
return true;
else
return false;
}
public void prev() {
if (currLine > 0) {
currLine--;
isChange = true;
}
}
public void setColor(int rgb){
rgbcolor=rgb;
}
public void setFont(Font font) {
this.font = font;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -