繁体   English   中英

将组件添加到Component []数组中

[英]Adding components into Component[] array

这似乎很基础,但是由于某种原因我无法使其正常工作。

我有以下代码:

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);
}

有没有办法缩短代码行数?

您需要先创建阵列,然后才能使用它(您需要提前知道阵列的大小):

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);
}

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM