⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 drawlabelpanel.java~46~

📁 源程序(包括最初的版本
💻 JAVA~46~
字号:
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) {
        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(current==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]);
      }
      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];
    this.setLayout(null);


  }





}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -