📄 hanoicodeanimationpanel.java
字号:
package datastructure;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: </p>
* @author unascribed
* @version 1.0
*/
import java.awt.*;
import javax.swing.*;
public class HanoiCodeAnimationPanel
extends JPanel {
String codeArray[];
String annotation[];
JLabel codeLines[];
JLabel annotationLines[];
JLabel lineNumber[];
JPanel codePanel;
JPanel rowHead;
int codeLineNbr;
int lastHighlightedLine;
public HanoiCodeAnimationPanel(String as[]) {
codeArray = as;
codeLineNbr = codeArray.length;
codeLines = new JLabel[codeLineNbr];
annotationLines = new JLabel[codeLineNbr];
lineNumber = new JLabel[codeLineNbr];
lastHighlightedLine = 0;
init();
}
public void init() {
codeLineNbr = codeArray.length;
annotation = new String[codeLineNbr];
codePanel = new JPanel();
rowHead = new JPanel();
codePanel.setLayout(new GridLayout(codeArray.length, 2));
codePanel.setBackground(Color.white);
rowHead.setBackground(Color.lightGray);
rowHead.setLayout(new GridLayout(codeArray.length, 1));
for (int i = 0; i < codeArray.length; i++) {
codeLines[i] = new JLabel();
annotationLines[i] = new JLabel();
lineNumber[i] = new JLabel();
codeLines[i].setText(" " + codeArray[i]);
annotationLines[i].setText("");
lineNumber[i].setText(Integer.toString(i + 1));
codeLines[i].setForeground(Color.blue);
annotationLines[i].setForeground(Color.green);
lineNumber[i].setForeground(Color.red);
codePanel.add(codeLines[i]);
codePanel.add(annotationLines[i]);
rowHead.add(lineNumber[i]);
}
add(rowHead);
add(codePanel);
}
public void highlight(int i, Color color) {
i--;
codeLines[lastHighlightedLine].setForeground(Color.blue);
lastHighlightedLine = i;
codeLines[i].setForeground(color);
}
public void highlight(int i) {
i--;
codeLines[lastHighlightedLine].setForeground(Color.blue);
lastHighlightedLine = i;
codeLines[i].setForeground(Color.red);
}
public void annotate(String s, int i, Color color) {
i--;
annotationLines[i].setText(" " + s);
// adjustScrollForView(i);
annotationLines[i].setForeground(color);
}
public void annotate(String s, int i) {
i--;
annotationLines[i].setText(" " + s);
annotationLines[i].setForeground(Color.green);
}
public void clear() {
for (int i = 0; i < codeArray.length; i++) {
codeLines[i].setForeground(Color.blue);
annotationLines[i].setText("");
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -