0

我有一个查询。我在垂直字段管理器中创建 3 个水平管理器。在编译我的代码时,我得到了 IllegalStatException。我正在这样做。

VerticalFieldmanager vfm = new VerticalFieldManager();
  HorizontalFieldManager hfm1 = new HorizontalFieldManager();
  {somecode}
  HorizontalFieldManager hfm1 = new HorizontalFieldManager();
  {somecode}   
 HorizontalFieldManager hfm1 = new HorizontalFieldManager();
  {somecode}

然后我将 hfm 添加到 vfm

 vfm.add(hfm1);
 vfm.add(hfm1);
 vfm.add(hfm1);
  add(vfm);    

我已经这样做了,但是遇到了一个例外。有人可以告诉我解决方案吗..

4

3 回答 3

1

您不能一遍又一遍地将相同的字段/经理添加到经理。

您可以使用 for 或一段时间执行类似的操作,并在其中创建一个新对象并将其添加到父管理器

于 2011-09-20T13:34:33.333 回答
0

您正在创建三个同名的 Horizo​​ntalFieldManager!不要那样做 - 尝试:

enter code here
VerticalFieldmanager vfm = new VerticalFieldManager();
HorizontalFieldManager hfm1 = new HorizontalFieldManager();
{somecode}
hfm1 = new HorizontalFieldManager();
{somecode}   
hfm1 = new HorizontalFieldManager();
{somecode}

或者

enter code here
VerticalFieldmanager vfm = new VerticalFieldManager();
for(int i=0;i<3;i++)
{
 HorizontalFieldManager hfm1 = new HorizontalFieldManager();
 {somecode}
}
于 2011-09-26T10:50:45.690 回答
0

问题是您一次又一次地创建相同的对象 hfm1 3 次您可以创建 3 个不同的对象,例如 hfm1、hfm2 和 hfm3

 VerticalFieldmanager vfm = new VerticalFieldManager();
    HorizontalFieldManager hfm1 = new HorizontalFieldManager();
    {somecode}
    HorizontalFieldManager hfm2 = new HorizontalFieldManager();
    {somecode}   
    HorizontalFieldManager hfm3 = new HorizontalFieldManager();
    vfm.add(hfm1);
    vfm.add(hfm2);
    vfm.add(hfm3);
     add(vfm)

或者

VerticalFieldmanager vfm = new VerticalFieldManager();
HorizontalFieldManager hfm1 = new HorizontalFieldManager();
{somecode}
hfm1 = new HorizontalFieldManager();
{somecode}   
hfm1 = new HorizontalFieldManager();
{somecode}

但在此仅添加最后一个 hfm1,因为由于运行时多态性......当第二个 hfm1 初始化时,第一个 hfm1 的对象释放它的内存,第三个 hfm1 释放添加的第二个 hfm1 的对象内存

所以在这种情况下,只有最后一个 hfm1 被添加到 vfm ......最好遵循第一种方法。

于 2012-04-23T07:19:45.653 回答