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