📄 frame1.java~338~
字号:
l1 = new JLabel("输入错误!");
l2 = new JLabel(" 请输入一个三元组形式表示的二叉树!");
l1.setFont(new Font("Dialog", 0, 15));
l2.setFont(new Font("Dialog", 0, 15));
l1.setBounds(100, 10, 180, 20);
l2.setBounds(40, 100, 180, 40);
jDialog.getContentPane().add(l1);
jDialog.getContentPane().add(l2);
jDialog.show();
return;
}
table.getPaintTableWH(drawTable.getWidth(), drawTable.getHeight()); //获得画板的宽度和高度
table.creatBinaryTreeTable(s); // 建表
drawTable.setTable(table); //drawPanel中的表成员的赋值
drawTable.initDrawLabelPanel();
drawTable.repaint(); //重画
drawTable.validate();
}
if (jRadioButtonTree.isSelected() == true) { //树
String s = text.getText();
tree.creatTree(s); //建造树
if (tree.creatSuccess == false) { //输入出错则弹出一个提示框
jDialog = new JDialog(this, "!!!", true);
//jDialog.setSize(200,70);
jDialog.setBounds(450, 300, 300, 120);
l1 = new JLabel("输入错误!");
l2 = new JLabel(" 请输入一个二元组形式表示的树!");
l1.setFont(new Font("Dialog", 0, 15));
l2.setFont(new Font("Dialog", 0, 15));
l1.setBounds(100, 10, 180, 20);
l2.setBounds(40, 100, 180, 40);
jDialog.getContentPane().add(l1);
jDialog.getContentPane().add(l2);
jDialog.show();
return;
}
table.getPaintTableWH(drawTable.getWidth(), drawTable.getHeight()); //获得画板的宽度和高度
table.creatTreeTable(s); // 建表
drawTable.setTable(table); //drawPanel中的表成员的赋值
drawTable.initDrawLabelPanel();
drawTable.repaint(); //重画
}
}
/**二叉树的先序遍历事件*/
void binaryTreePreOrder_actionPerformed(ActionEvent e) {
if (table.isEmpty() == true) {
return;
}
//使其他功能按钮不能使用
text.setEnabled(false);
binaryTreePreOrder.setEnabled(true);
binaryTreeInOrder.setEnabled(false);
binaryTreePostOrder.setEnabled(false);
treePreOrder.setEnabled(false);
treePostOrder.setEnabled(false);
binaryTreePreOrder.setText("下一步");
table.changePathQueue(binaryTree.preOrder()); //先序遍历
drawTable.setTable(table);
if (index < table.number) { //画图
drawTable.setCurrent(++index);
drawTable.fillCurrent();
drawTable.unFillPreCurrent(index - 1);
drawTable.paintBottomNode();
drawTable.repaint();
}
if (index == table.number) { //重新开始
index = -1;
drawTable.cleanBottonCircle();
//drawTable.unFillPreCurrent(0);
binaryTreePreOrder.setText("先序遍历");
binaryTreeInOrder.setText("中序遍历");
binaryTreePostOrder.setText("后序遍历");
binaryTreeInOrder.setEnabled(true);
binaryTreePostOrder.setEnabled(true);
}
}
/***二叉树的中序遍历事件*/
void binaryTreeInOrder_actionPerformed(ActionEvent e) {
if (table.isEmpty() == true) {
return;
}
//使其他功能按钮不能使用
text.setEnabled(false);
binaryTreePreOrder.setEnabled(false);
binaryTreeInOrder.setEnabled(true);
binaryTreePostOrder.setEnabled(false);
treePreOrder.setEnabled(false);
treePostOrder.setEnabled(false);
binaryTreeInOrder.setText("下一步");
table.changePathQueue(binaryTree.inOrder()); //中序遍历
drawTable.setTable(table);
if (index < table.number) {
drawTable.setCurrent(++index);
drawTable.fillCurrent();
drawTable.unFillPreCurrent(index - 1);
drawTable.paintBottomNode();
drawTable.repaint();
}
if (index == table.number) { //重新开始
index = -1;
drawTable.cleanBottonCircle();
binaryTreePreOrder.setText("先序遍历");
binaryTreeInOrder.setText("中序遍历");
binaryTreePostOrder.setText("后序遍历");
binaryTreePreOrder.setEnabled(true);
binaryTreePostOrder.setEnabled(true);
}
}
/***二叉树的后序遍历事件*/
void binaryTreePostOrder_actionPerformed(ActionEvent e) {
if (table.isEmpty() == true) {
return;
}
//使其他功能按钮不能使用
text.setEnabled(false);
binaryTreePreOrder.setEnabled(false);
binaryTreeInOrder.setEnabled(false);
binaryTreePostOrder.setEnabled(true);
treePreOrder.setEnabled(false);
treePostOrder.setEnabled(false);
binaryTreePostOrder.setText("下一步");
table.changePathQueue(binaryTree.postOrder()); //后序遍历
drawTable.setTable(table);
if (index < table.number) {
drawTable.setCurrent(++index);
drawTable.fillCurrent();
drawTable.unFillPreCurrent(index - 1);
drawTable.paintBottomNode();
drawTable.repaint();
}
if (index == table.number) { //重新开始
index = -1;
drawTable.cleanBottonCircle();
binaryTreeInOrder.setText("中序遍历");
binaryTreePreOrder.setText("先序遍历");
binaryTreePostOrder.setText("后序遍历");
binaryTreeInOrder.setEnabled(true);
binaryTreePreOrder.setEnabled(true);
}
}
/**树的先根遍历事件*/
void treePreOrder_actionPerformed(ActionEvent e) {
if (table.isEmpty() == true) {
return;
}
//使其他功能按钮不能使用
text.setEnabled(false);
binaryTreePreOrder.setEnabled(false);
binaryTreeInOrder.setEnabled(false);
binaryTreePostOrder.setEnabled(false);
treePreOrder.setEnabled(true);
treePostOrder.setEnabled(false);
treePreOrder.setText("下一步");
table.changePathQueue(tree.preOrder());
drawTable.setTable(table);
if (index < table.number) {
drawTable.setCurrent(++index);
drawTable.fillCurrent();
drawTable.unFillPreCurrent(index - 1);
drawTable.paintBottomNode();
drawTable.repaint();
}
if (index == table.number) { //重新开始
index = -1;
drawTable.cleanBottonCircle();
treePreOrder.setText("先根遍历");
treePostOrder.setEnabled(true);
}
}
/**树的后根遍历事件*/
void treePostOrder_actionPerformed(ActionEvent e) {
if (table.isEmpty() == true) {
return;
}
//使其他功能按钮不能使用
text.setEnabled(false);
binaryTreePreOrder.setEnabled(false);
binaryTreeInOrder.setEnabled(false);
binaryTreePostOrder.setEnabled(false);
treePreOrder.setEnabled(false);
treePostOrder.setEnabled(true);
treePostOrder.setText("下一步");
table.changePathQueue(tree.postOrder());
drawTable.setTable(table);
if (index < table.number) {
drawTable.setCurrent(++index);
drawTable.fillCurrent();
drawTable.unFillPreCurrent(index - 1);
drawTable.paintBottomNode();
drawTable.repaint();
}
if (index == table.number) { //重新开始
index = -1;
drawTable.cleanBottonCircle();
treePostOrder.setText("后根遍历");
treePreOrder.setEnabled(true);
}
}
/**重置*/
void reset_actionPerformed(ActionEvent e) {
table = new Table(); //表格数据,记录了节点的坐标等信息
tree = new Tree(); //树
binaryTree = new BinaryTree(); //二叉树
autoThread = null; //基本运行线程
index = -1;
//fps = 1000; //频率
/******************************************************
//drawTable=new DrawPanel();
切记,不要再新建一个对象了!!
******************************************************/
drawTable.removeAll();
drawTable.repaint();
text.setEnabled(true);
text.setText(null);
binaryTreePreOrder.setEnabled(true);
binaryTreeInOrder.setEnabled(true);
binaryTreePostOrder.setEnabled(true);
treePreOrder.setEnabled(true);
treePostOrder.setEnabled(true);
binaryTreePreOrder.setText("先序遍历");
binaryTreeInOrder.setText("中序遍历");
binaryTreePostOrder.setText("后序遍历");
treePreOrder.setText("先根遍历");
treePostOrder.setText("后根遍历");
}
/**自动遍历*/
void auto_actionPerformed(ActionEvent e) {
// if(e.getActionCommand().equals("start")){
//now="auto";
// auto.setText("pause");
//if(index==-1){return;}
if (auto.getText().equals("auto")) {
now = "auto";
auto.setText("pause");
auto.setToolTipText("暂停");
travel = true;
autoThread = new Thread(this);
autoThread.start();
}
else if (auto.getText().equals("pause")) {
now = "pause";
auto.setText("continue");
auto.setToolTipText("继续");
// autoThread.interrupt();
//auto
}
else if (auto.getText().equals("continue")) {
now = "continue";
auto.setText("pause");
auto.setToolTipText("暂停");
//autoThread.interrupt();
}
}
void stop_actionPerformed(ActionEvent e) {
if (auto.getText().equals("auto")) {
return;
}
now = "stop";
travel = false;
index = -1;
auto.setText("auto");
autoThread.interrupt();
//Thead.stop()f方法不提倡使用了!!
/*try {
autoThread.stop();
}
catch (Exception ex) {
}
autoThread = null;*/
//按钮的还原
if (jRadioButtonTree.isSelected() == true) {
treePreOrder.setEnabled(true);
treePostOrder.setEnabled(true);
treePreOrder.setText("先根遍历");
treePostOrder.setText("后根遍历");
}
else if (jRadioButtonBT.isSelected() == true) {
binaryTreePreOrder.setEnabled(true);
binaryTreeInOrder.setEnabled(true);
binaryTreePostOrder.setEnabled(true);
binaryTreePreOrder.setText("先序遍历");
binaryTreeInOrder.setText("中序遍历");
binaryTreePostOrder.setText("后序遍历");
}
drawTable.cleanBottonCircle(); //画板的清除
drawTable.repaint();
}
/**实现Runnable接口的方法*/
public void run() {
while (index < table.number - 1) {
if (!now.equals("pause")) {
if (travel == true) {
drawTable.setCurrent(++index);
drawTable.fillCurrent();
drawTable.unFillPreCurrent(index - 1);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -