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

📄 qtextarea.java

📁 j2me 高级UI
💻 JAVA
字号:
/**
 * 作者:cat 戚永城
 * 时间:2008-3-1
 * QQ:415898635
 * E-Mail:	415898635@qq.com
 * 			qyc_12345@163.com
 * 
 * */
package org.qui.conmponent;

import java.util.Vector;

import javax.microedition.lcdui.Graphics;

import org.qui.container.QSelector;
import org.qui.image.JiugongDiv;
import org.qui.info.Attribute;
import org.qui.info.Key;
import org.qui.manager.QComboItem;
import org.qui.manager.UIManager;
import org.qui.util.StringEx;

public class QTextArea extends QComboItem {
	
	
	public QTextArea(int x, int y, int width, int height) {
		super(x, y, width, height);	
		onShowSelectedItemNum=100;
		br=Attribute.text_backR;
		bg=Attribute.text_backG;
		bb=Attribute.text_backB;
	}

	public String text = "";

	private boolean showScrollBar=false;

	public void append(String text) {
		this.text = this.text + text;
		line = StringEx.tokenCast(this.text, width-4, font);
		if(line.size()>height/fontHeight){
			line = StringEx.tokenCast(this.text, width-10, font);
			showScrollBar=true;
		}
		itemSum=line.size();
	}

	public Vector line = new Vector();
	public int onShowItemNum=0;
	public void paint(Graphics g) {
		int[] clip=new int[4];
		clip[0] = g.getClipX();
		clip[1] = g.getClipY();
		clip[2] = g.getClipWidth();
		clip[3] = g.getClipHeight();
		g.setClip(x + ui.offx, y + ui.offy, width ,height);
		// 画背景
		g.setColor(br,bg,bb);
		g.fillRect(x + ui.offx, y + ui.offy, width, height);
		// 画前景
		g.setColor(fr, fg, fb);
		g.setFont(font);
		// 画边框

		int length = itemSum;
		for (int i = startItem; i < length; i++) {
			g.drawString(line.elementAt(i).toString(), x + ui.offx +2, y + ui.offy +2+ fontHeight * (i-startItem),Graphics.LEFT | Graphics.TOP);
		}
		// 画scrollBar
		if(showScrollBar){
			g.drawImage(UIManager.scroll_btn_right, x + ui.offx +width-1, 
					y + ui.offy +(((height-UIManager.scroll_btn_right.getHeight())/(itemSum-height/fontHeight))*startItem),Graphics.RIGHT|Graphics.TOP);
		}
		g.setClip(clip[0],clip[1],clip[2],clip[3]);
		//if focus
		if(focus){
			JiugongDiv.drawJiuGong(g, UIManager.light, x + ui.offx - 8, y + ui.offy - 8, width+16,height+16);
		}
	}
	public int startItem = 0;

	private int fireCount=0;

	public void keyPressed(int keyCode) {
		super.keyPressed(keyCode);
		if (!ui.selector.inComboItem) {
			ui.selector.inComboItem = true;
		} else {
			if (keyCode == Key.LEFT || keyCode == Key.UP) {
				if (startItem > 0) {
					startItem--;
				}
			} else if (keyCode == Key.RIGHT || keyCode == Key.DOWN) {
				if (startItem < itemSum - height / fontHeight) {
					startItem++;
				}
			} else if (keyCode == Key.FIRE) {
				fireCount = (fireCount + 4) % 3;
				if (fireCount == 0) {

				} else if (fireCount == 1) {
					ui.selector.inComboItem = false;
				} else if (fireCount == 2) {
					ui.selector.inComboItem = false;
				}
			}
		}
	}

	public void keyReleased(int keyCode) {
		super.keyReleased(keyCode); 
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -