📄 drawlabelpanel.java~50~
字号:
package treeandbtreedemo;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2005</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
* @4.2(2005.7.11)另一个画板通过添加节点图标来画图
*/
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.event.*;
import javax.swing.border.*;
public class DrawLabelPanel extends JPanel {
Table t; //表格数据
int current = -1; //控制遍历时所要画的节点
//int r; //圆圈半径为10
int index=-1;
CircleNode circles[];
CircleNode bottomCircle[];
public DrawLabelPanel() {
t = new Table();
current = -1;
index=-1;
circles=new CircleNode[100];
bottomCircle=new CircleNode[100];
this.setLayout(null);
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
for(int i=1;i<t.number;i++){
int pa=t.tables[i].parents;
if (circles[i] != null && circles[pa] != null) {
if (circles[i].getParent() == this && circles[pa].getParent() == this) {
g.setColor(Color.BLUE);
g.drawLine(circles[i].getX() + t.r, circles[i].getY() + t.r,
circles[pa].getX() + t.r, circles[pa].getY() + t.r);
}
}
}
}
/**初始化一棵树*/
public void initDrawLabelPanel(){
for(int i=0;i<t.number;i++){
circles[i]=new CircleNode(t.tables[i].name.toString(),t.r,false);
this.add(circles[i]);
circles[i].setBounds(t.tables[i].getX() + this.getWidth() / 2 - t.r,
t.tables[i].getY() + this.getHeight() / 8 - t.r,
t.r * 2, t.r * 2);
//this.add(circles[i]);
this.validate();
}
this.repaint();
for(int j=0;j<t.number;j++){
bottomCircle[j]=new CircleNode(circles[j].name ,
circles[j].radius,
true);
}
}
public void paintBottomNode() {
int w = 40;
if(index==0){
bottomCircle[current].setBounds(w - t.r,
this.getHeight() - 20 - t.r,
t.r * 2, t.r * 2);
this.add(bottomCircle[current]);
this.validate();
}
else if(current<t.number){
bottomCircle[current].setBounds(bottomCircle[t.path[index-1]].getX()+w - t.r,
this.getHeight() - 20 - t.r,
t.r * 2, t.r * 2);
this.add(bottomCircle[current]);
this.validate();
}
}
public void cleanBottonCircle(){
for(int i=0;i<t.number;i++){
if(bottomCircle[i].getParent()==this)
this.remove(bottomCircle[i]);
circles[i].setfill(false);
}
this.validate();
}
public void fillCurrent(){
circles[current].setfill(true);
this.validate();
}
public void unFillPreCurrent(int in){
if(in>=0) {
circles[t.path[in]].setfill(false);
}
this.validate();
}
/**设置表格*/
public void setTable(Table ta) {
t = ta;
}
/**设置当前节点*/
public void setCurrent(int c) {
current = t.path[c];
index=c;
}
public void InitDrawLablePanel(){
t = new Table();
current = -1;
index=-1;
circles=new CircleNode[100];
bottomCircle=new CircleNode[100];
this.setLayout(null);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -