?? movingtext.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 + -