[英]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.