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;

改用 List 可能是一个更好的主意(更灵活、更好的 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

最简单的方法是使用您首先提供的代码,然后创建一个新的 Component[] ,其 size = 为您以编程方式获得的 3 个数组的总和。然后手动将 3 个数组中的每一个中的所有元素添加到统一数组中

于 2012-05-18T17:49:37.317 回答
0

在其他人提到的旧方法中,您需要先创建数组。

在您的新方法中,将 arraylist 定义为ArrayList<Component> c = new ArrayList<Component>();. 另请检查是否ToolbarPool.getDefault().findToolbar("AddEditDelete").getComponents())返回正确的非空Component对象。

于 2012-05-18T17:51:50.613 回答