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

📄 richlabel.java

📁 Typing fingers Typing programme
💻 JAVA
字号:
import java.awt.*;
import javax.swing.*;

/**	This class extends JPanel to make a multicolor label used in typing components.
*/

class RichLabel extends JPanel{
	private Font font;
	private FontMetrics metrics;
	private Color backcolor;
	private int total,charWidth;
	private char character[];
	private Color color[];
	private int candisplay;
	private int lineWidth;
	private int indent;
	RichLabel(){
		UserData user=MainScreen.getInstance().getCurrentUser();
		font=new Font("MonoSpaced",Font.PLAIN,user.getTypingFontSize());
		metrics=getFontMetrics(font);
		charWidth=metrics.charWidth('a');
		lineWidth=Utilities.getLineWidth();
		indent=Utilities.getIndent();
		setPreferredSize(new Dimension(lineWidth,Utilities.getLabelHeight()));
		candisplay=(lineWidth-2*indent)/charWidth;
		character=new char[candisplay+1];
		color=new Color[candisplay+1];
		character[0]=' ';
		backcolor=user.getBackground();
	}
	public void paint(Graphics g){
		g.setFont(font);
		g.setColor(backcolor);
		g.fillRect(0,0,getWidth(),getHeight());
		int y=(getHeight()-metrics.getHeight())/2+metrics.getAscent();
		for(int i=0;i<total;i++){
			g.setColor(color[i]);
			g.drawString(String.valueOf(character[i]),indent+i*charWidth,y);
		}
	}
	public void addChar(char ch,Color c){
		if(total>=candisplay)
			return;
		character[total]=ch;
		color[total]=c;
		total++;
		repaint();
	}
	public boolean nextAllowed(){
		return (total<candisplay) ? true : false;
	}
	public void removeChar(){
		if(total>0){
			total--;
			repaint();
		}
	}
	public char charAt(int index){
		if(index<0||index>=total)
			return '\0';
		return character[index];
	}
	public void clearText(){
		total=0;
		character[0]=' ';
		repaint();
	}
	public String getText(){
		return new String(character);
	}
}

⌨️ 快捷键说明

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