⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stringlayout.java

📁 j2me 实现String自动换行 ,控制翻页
💻 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 + -