0

クエリが 1 つあります。垂直フィールド マネージャー内に 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 または a while を使用してそのようなことを行い、内部に新しいオブジェクトを作成して親マネージャーに追加することができます

于 2011-09-20T13:34:33.333 に答える
0

同じ名前の 3 つの Horizo​​ntalFieldManagers を作成しています! そうしないでください - 試してください:

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 回何度も作成していることです。hfm1、hfm2、hfm3 のような 3 つの異なるオブジェクトを作成できます。

 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 のオブジェクトは、2 番目の hfm1 が初期化されるときにメモリを解放し、3 番目の hfm1 は追加された 2 番目の hfm1 のオブジェクト メモリを解放します。

したがって、この場合、最後の hfm1 のみが vfm に追加されます...最初のアプローチに従う方がよいでしょう。

于 2012-04-23T07:19:45.653 に答える