magiclabel.java

来自「Typing fingers Typing programme」· Java 代码 · 共 94 行

JAVA
94
字号
import java.awt.*;
import javax.swing.*;
class MagicLabel extends JPanel{
	private Font font;
	private FontMetrics metrics;
	private Color backcolor;
	private int total,charWidth;
	private char character[];
	private Color color[],magicColor;
	private char magic;
	private int candisplay,indent,width;
	MagicLabel (char ch,Color c){
		UserData user=MainScreen.getInstance().getCurrentUser();
		font=new Font("MonoSpaced",Font.PLAIN,user.getTypingFontSize());
		metrics=getFontMetrics(font);
		charWidth=metrics.charWidth('a');
		indent=Utilities.getIndent();
		width=Utilities.getLineWidth();
		setPreferredSize(new Dimension(width+indent*2,20));
		candisplay=(width-2*indent)/charWidth;
		character=new char[150];
		color=new Color[150];
		magic=ch;
		character[0]=' ';
		color[0]=magicColor=c;
		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);
		}
	}
	void setFontSize(int size){
		if(size<12||size>24)
			return;
		font=new Font("MonoSpaced",Font.PLAIN,size);
		metrics=getFontMetrics(font);
		charWidth=metrics.charWidth('a');
		repaint();
	}
	public void setBackground(Color c){
		backcolor=c;
		repaint();
	}
	public void removeMagicChar(){
		character[total]=' ';
		repaint();
	}
	public void addChar(char ch,Color c){
		if(total>=candisplay)
			return;
		character[total]=ch;
		color[total]=c;
		total++;
		character[total]=magic;
		color[total]=magicColor;
		repaint();
	}
	public boolean nextAllowed(){
		return (total<candisplay) ? true : false;
	}
	public void removeChar(){
		if(total>0){
			total--;
			character[total]=magic;
			color[total]=magicColor;
			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 void showMagicChar(){
		character[0]=magic;
		repaint();
	}
	public String getText(){
		return new String(character);
	}
}

⌨️ 快捷键说明

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