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

📄 movingtext.java

📁 Typing fingers Typing programme
💻 JAVA
字号:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/**	This class uses to MovingLabels to make a typing component.Upper label is right aligned
*	while the lower is center aligned.*/

class MovingText extends JPanel implements TypingComponent{
	String lesson,user="";
	MovingLabel upper,lower;
	private int index,top,lessonLength;
	private boolean show=true;
	private Color lessonColor;
	private Color chaseColor;
	private Color errorColor;
	char character[];
	TypingFrame frame;
	CalculateSpeed calculate;
	private boolean startFlag=true;
	private SpeedGraphFrame speedFrame;
	private DialogLabel label;
	private KeyboardFrame keyboard;
	MovingText(String lesson,SpeedGraphFrame speedFrame,KeyboardFrame keyboard){
		this.lesson=lesson;
		lessonLength=lesson.length();
		this.keyboard=keyboard;
		this.speedFrame=speedFrame;
		upper=new MovingLabel(MovingLabel.right);
		lower=new MovingLabel(MovingLabel.center);
		int w=upper.getPreferredSize().width;
		int h=upper.getPreferredSize().height;
		JPanel temp=new JPanel();
		temp.setLayout(new GridLayout(2,1));
		temp.add(upper);
		temp.add(lower);
		frame=new TypingFrame(this);
		frame.setSize(Utilities.getTypingFrameSize().width,h*4);
		MainScreen mainScreen=MainScreen.getInstance();
		UserData user=mainScreen.getCurrentUser();
		lessonColor=user.getLessonColor();
		chaseColor=user.getTypingColor();
		errorColor=user.getErrorColor();
		setLayout(new BorderLayout());
		add(temp,BorderLayout.NORTH);
		JPanel panel=new JPanel();
		panel.add(new ImagePanel(new ImageIcon(System.getProperty("user.dir")+
								"/Images/ComputerType.gif")));	
		add(panel);
		JPanel pan=new JPanel();
		pan.add(label=new DialogLabel("Speed=0 WPM",new Font("Times new Roman",Font.BOLD,20)));
		add(pan,BorderLayout.SOUTH);
		calculate=new CalculateSpeed(lesson,label);
		speedFrame.setSpeedSource(calculate);
	}
	public TypingFrame getFrame(){
		return frame;
	}
	public void paint(Graphics g){
		if(show==true){
			initialize();
			show=false;
		}
		super.paint(g);
	}
	private void initialize(){
		int limit=upper.canDisplay()-lower.canDisplay()+1;
		for(int i=0;i<limit&&i<lesson.length();i++){
			lesson=lesson+' ';
			upper.addChar(lesson.charAt(i),lessonColor);
		}
		index=limit;
		lower.addChar('^',chaseColor);
		keyboard.highlightKey(lesson.charAt(top));
	}
	public Dimension getSize(){
		return getPreferredSize();
	}
	public void addChar(char ch){
		if(ch==8)
			return;
		upper.addChar(lesson.charAt(index++),lessonColor);
		lower.removeChar();
		if(ch==lesson.charAt(top++))
			lower.addChar(ch,lessonColor);
		else
			lower.addChar(ch,errorColor);			
		lower.addChar('^',chaseColor);
		user=user+ch;
		calculate.update(ch);
		if(startFlag){
			calculate.startLesson();
			speedFrame.lessonStarted();
			startFlag=false;
		}
		if(user.length()>=lessonLength){
			MainScreen.getInstance().lessonEnded();
			return ;
		}
		keyboard.highlightKey(lesson.charAt(user.length()));
	}
	public void updateValues(){
		MainScreen screen=MainScreen.getInstance();
		TempInfo temp=screen.getTempInfo();
		temp.updateValues(calculate.getWords(),calculate.getAccuracy(),
									calculate.getTime());
		temp.updateUserData();
	}
}

⌨️ 快捷键说明

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