描述:随着时间推移,A变为B,B分为C D E,C和D合并为I,E变为H,I和H又合并为J,其中,A-J是Object,最上面是现在的时间。问题:我要用Graphics画出这个图形,要根据下面的Object的宽度和位置得到上面的Object的宽度和位置,比如,我需要得到C的最左侧和D的最右侧位置,才能得到I的位置和宽度。所以,我要从最下面开始遍历,然后从左侧遍历才行。请问,如何存储,用什么数据结构?才能体现这种关系啊?才能画出这个模型呢?谢谢各位!graphics2D数据结构

解决方案 »

  1.   

    hi,我要循环遍历得到所有的Object,判断拖动的位置,然后遍历拖动点附近的Object,然后插入到容器里。
    A是一个常量模型,B是一个分割模型,B分割成了C,D,E,C,D,E相当于B的孩子,所以可以把B,C,D,E当成一个模型。H,I,J也是常量模型。
    现在我把A和B放在了一个主VectorMain里,B的孩子们C,D,E分别有自己的VectorC, VectorD, VectorE,比如VectorE存储H,这样就能递归遍历Vector得到所有的模型了。
    但是问题是,我不知道该把模型I放在哪个Vector里,放在VectorC? 还是VectorD?遍历的时候,又如何递归遍历到I呢? 模型J也是类似的情况
      

  2.   

    hi,我要循环遍历得到所有的Object,判断拖动的位置,然后遍历拖动点附近的Object,然后插入到容器里。
    A是一个常量模型,B是一个分割模型,B分割成了C,D,E,C,D,E相当于B的孩子,所以可以把B,C,D,E当成一个模型。H,I,J也是常量模型。
    现在我把A和B放在了一个主VectorMain里,B的孩子们C,D,E分别有自己的VectorC, VectorD, VectorE,比如VectorE存储H,这样就能递归遍历Vector得到所有的模型了。
    但是问题是,我不知道该把模型I放在哪个Vector里,放在VectorC? 还是VectorD?遍历的时候,又如何递归遍历到I呢? 模型J也是类似的情况
    描述:随着时间推移,A变为B,B分为C D E,C和D合并为I,E变为H,I和H又合并为J,其中,A-J是Object,A是一个常量模型,B是一个分割模型,B分割成了C,D,E,C,D,E相当于B的孩子,所以可以把B,C,D,E当成一个模型。H,I,J也是常量模型。A-J是拖动上去的。
    最上面是现在的时间。我要循环遍历得到所有的Object,用Graphics画出这个图形,要根据下面的Object的宽度和位置得到上面的Object的宽度和位置,比如,我需要得到C的最左侧和D的最右侧位置,才能得到I的位置和宽度。所以,我要从最下面开始遍历,然后从左侧遍历才行。现在我把A和B放在了一个主VectorMain里,B的孩子们C,D,E分别有自己的VectorC, VectorD, VectorE,比如VectorE存储H,这样就能递归遍历Vector得到所有的模型了。
    但是问题是,我不知道该把模型I放在哪个Vector里,放在VectorC? 还是VectorD?遍历的时候,又如何递归遍历到I呢? 模型J也是类似的情况请问,把I放在哪个Vector里,才能遍历到I?或者有没有其他的存储C和D合并为I这种关系呢?谢谢各位!
      

  3.   

    面向对象:a,bcdef 封装成一个对象,对象里面有你要的属性,如:宽,高,左侧位置,右侧位置,或者是层次(a 第一层)
      

  4.   

    直接XML存上就得了.说到底就是你怎么取方便你就怎么存.
      

  5.   

    能否简要写一下,图中A-J关系如何用XML存储?
      

  6.   


     <node name="A" width="300" height="100" color="#ff0000" x="150" y="150"/>
     <node name="J" width="300" height="100" color="#ffff00" x="0" y="600"/>
    ....
      

  7.   


    <node name="A" width="" height="" color="" x="" y="" parentsName=""/>
    <node name="B" width="" height="" color="" x="" y="" parentsName="A"/>
    <node name="C" width="" height="" color="" x="" y="" parentsName="B"/>
    <node name="D" width="" height="" color="" x="" y="" parentsName="B"/>
    <node name="E" width="" height="" color="" x="" y="" parentsName="B"/>
    <node name="H" width="" height="" color="" x="" y="" parentsName="E"/>
    <node name="I" width="" height="" color="" x="" y="" parentsName="C,D"/>
    <node name="J" width="" height="" color="" x="" y="" parentsName="H,I"/>怎么存都可以,关键是你读取后怎么处理数据逻辑.
      

  8.   

    谢谢你的回答。
    对于这个图,各个模型是拖动上去的,比如先有一个Z,拖动分支模型B到Z上,就出现B和Z。如图:

    拖动分支模型A到B1上,模型C到B2上,出现如图:其他的类似。我是利用Vector存储递归遍历各个模型的。
    首先有一个Vector存储模型Z和分支模型B。对于分支B1和B2来说,它们分别有各自的Vector:VectorB1和VectorB2,VectorB1里存储A,VectorB2里存储C和F。
    当然,对于分支模型A来说,A1有VectorA1,存储D和G;A2有VectorA2,存储E。
    这样通过递归调用,就能从最左侧(也就是A1,D,G)确定它们的位置,然后确定A2的位置(确保不与A1重叠),它们的高度是平均分的。
    问题是:我不知道如何存储模型I,我想通过拖动I到E,F之间的空隙,生成如图:,所以,我不知道如何存储I,是存储到VectorA2?还是VectorB2?
    请问你有什么想法吗?
    用Vector存储,递归遍历,这样可以吗?