0

これはとても基本的なようですが、何らかの理由で私はそれを機能させることができません。

私は次のコードを持っています:

Component[] AddEditDelete = ToolbarPool.getDefault().findToolbar("AddEditDelete").getComponents();
for (Component component : AddEditDelete) {
    component.setEnabled(false);
}

Component[] Navigation = ToolbarPool.getDefault().findToolbar("Navigation").getComponents();
for (Component component : Navigation) {
    component.setEnabled(false);
}

Component[] ListFind = ToolbarPool.getDefault().findToolbar("ListFind").getComponents();
for (Component component : ListFind) {
    component.setEnabled(false);
}

私がやりたいのは、単一のComponent [] c配列を作成し、その配列にツールバーからすべてのコンポーネントを追加することです。

私の直感的なアプローチ

Component[] c;
c.add(stuff);

うまくいかなかったようです。だから私はあなたが他の方法でそれをしていると思います。

edit1: ArrayList> Componentを使用した最近の試みが機能しませんでした=(

ArrayList c = new ArrayList();
c.add(ToolbarPool.getDefault().findToolbar("AddEditDelete").getComponents());
c.add (ToolbarPool.getDefault().findToolbar("Navigation").getComponents());
Component[] cc = (Component[]) c.toArray();
for (Component component : cc) {
    component.setEnabled(false);
}

edit2:愚かな私、型なしでArrayListを使おうとしています。これは機能しますが、それでもかなりの数行のコードになります。

ArrayList<Component> c = new ArrayList<Component>();
for (int i = 0; i < ToolbarPool.getDefault().findToolbar("AddEditDelete").getComponents().length; i++) {
    c.add(ToolbarPool.getDefault().findToolbar("AddEditDelete").getComponent(i));
}
for (int i = 0; i < ToolbarPool.getDefault().findToolbar("Navigation").getComponents().length; i++) {
    c.add(ToolbarPool.getDefault().findToolbar("Navigation").getComponent(i));
}
for (Component component : c) {
    component.setEnabled(false);
}

コードの行数を短縮する方法はありますか?

4

3 に答える 3

0

使用する前にアレイを作成する必要があります(アレイのサイズを事前に知っておく必要があります)。

Component[] c = new Components[10];
c[0] = stuff;

代わりにリストを使用することをお勧めします(より柔軟でより優れたAPI):

List<Component> components = new ArrayList<Components>
components .addAll(Arrays.asList(ToolbarPool.getDefault().findToolbar("AddEditDelete").getComponents()));
components .addAll(Arrays.asList(ToolbarPool.getDefault().findToolbar("Navigation").getComponents()));
for (Component component : components) {
    component.setEnabled(false);
}
于 2012-05-18T17:49:01.007 に答える
0

最も簡単な方法は、最初に提示したコードを使用してから、プログラムで取得した3つの配列の合計にサイズ=の新しいComponent[]を作成することです。次に、3つのアレイのそれぞれのすべての要素を統合アレイに手動で追加します

于 2012-05-18T17:49:37.317 に答える
0

他の人が述べているような古いアプローチでは、最初にアレイを作成する必要があります。

新しいアプローチでは、arraylistをとして定義しますArrayList<Component> c = new ArrayList<Component>();。またToolbarPool.getDefault().findToolbar("AddEditDelete").getComponents())、が適切なnull以外のオブジェクトを返しているかどうかを確認してくださいComponent

于 2012-05-18T17:51:50.613 に答える