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

📄 movinglabel.java

📁 Typing fingers Typing programme
💻 JAVA
字号:
import java.awt.*;
import javax.swing.*;
/**	This class extends JPanel to display text on it.The text scrolls from right to left
*	everytime a char is typed.	*/
class MovingLabel extends JPanel{
	private Font font;
	private FontMetrics metrics;
	private Color backcolor;
	private int total,charWidth,alignment=0;
	private char character[];
	private Color color[];
	private int candisplay;
	public static final int right=0,center=1;
	public int half;
	MovingLabel(int alignment){
		UserData user=MainScreen.getInstance().getCurrentUser();
		font=new Font("MonoSpaced",Font.PLAIN,user.getTypingFontSize());
		metrics=getFontMetrics(font);		
		charWidth=metrics.charWidth('a');
		setPreferredSize(new Dimension(Utilities.getLineWidth(),
							Utilities.getLabelHeight()));
		character=new char[80];
		color=new Color[80];
		if(alignment<0||alignment>1)
			return;
		this.alignment=alignment;
		backcolor=user.getBackground();
		setValues();
	}
	public void setValues(){
		candisplay=(Utilities.getLineWidth()-2*Utilities.getIndent())/charWidth;
		if(candisplay%2==1)
			candisplay++;
		if(alignment==1)
			candisplay/=2;
	}
	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();
		int x,end;
		if(alignment==0)
			end=Utilities.getLineWidth()-Utilities.getIndent();
		else
			end=Utilities.getLineWidth()-Utilities.getIndent()-(candisplay)*charWidth;
		for(int i=0;i<total;i++){
			x=end-charWidth*(total-i);
			g.setColor(color[i]);
			g.drawString(String.valueOf(character[i]),x,y);
		}
	}
	public void addChar(char ch,Color c){
		if(total<candisplay){
			character[total]=ch;
			color[total++]=c;
		}
		else{
			for(int i=0;i<total;i++){
				character[i]=character[i+1];
				color[i]=color[i+1];
			}
			character[total-1]=ch;
			color[total-1]=c;
		}
		repaint();
	}
	public void setBackground(Color c){
		backcolor=c;
		repaint();
	}
	public void removeChar(){
		if(total>0)
			total--;
		repaint();
	}
	public int canDisplay(){
		return candisplay;
	}
}

⌨️ 快捷键说明

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