我的目标是创建一个打印二叉树的方法。
T_tree
是一个Iterator
,它返回一个包含x
和y
坐标以及关键变量的对象。
我正在尝试找到一种方法将这些值从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);
}
}
}
答案 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);
}
}