如何将值从Iterator传递到paintComponent

时间:2016-01-24 11:40:15

标签: java graphics iterator binary-tree paintcomponent

我的目标是创建一个打印二叉树的方法。

T_tree是一个Iterator,它返回一个包含xy坐标以及关键变量的对象。

我正在尝试找到一种方法将这些值从Iterator发送到paintComponent方法。

问题似乎是paintComponent(Graphics g)方法已在T_tree迭代器之前初始化。

我该如何解决这个问题?这是我的代码:

public class print_tree extends JPanel {

    Iterator T_tree;    

    print_tree(tree _tree) {
        T_tree = _tree.iterator();
    }

    public void paintComponent(Graphics g) { 
        super.paintComponent(g);
        this.setBackground(Color.WHITE);

        g.setColor(Color.BLUE);

        while (T_tree.hasNext()) {
            node_cor temp = (node_cor)T_tree.next();

            g.drawOval(temp.x_cor, temp.y_cor, 30, 30);
            g.drawString(""+temp.key+"",temp.x_cor ,50+temp.y_cor);
        }   
    }

}

1 个答案:

答案 0 :(得分:1)

public class print_tree extends JPanel {

tree_Iterator T_tree; // this is not an iterator  
                       //i switch from using stack to dynamic array     

public  print_tree(tree _tree){

    T_tree =(tree_Iterator) _tree.iterator();
    setVisible(true);
}

public void paintComponent(Graphics g)
{ 
    super.paintComponent(g);
    this.setBackground(Color.WHITE);
    g.setColor(Color.BLUE);

    darray _arr = T_tree.arr;
    for(int i=0;i<=_arr.end;i++)
    {
        node_cor temp = _arr.arr[i];

        g.drawOval(temp.x_cor, temp.y_cor, 30, 30);
        g.drawString(""+temp.key+"",temp.x_cor ,50+temp.y_cor);

    }

}