这看起来很基本,但出于某种原因,我无法让它发挥作用。
我有以下代码:
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>组件不起作用=(
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);
}
有没有办法缩短代码行数?
答案 0 :(得分: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);
}
答案 1 :(得分:0)
最简单的方法是首先使用您提供的代码,然后创建一个新的Component [],其大小=以编程方式获得的3个数组的总和。然后手动将3个阵列中的每个阵列中的所有元素添加到统一阵列
答案 2 :(得分:0)
在其他人提到的旧方法中,您需要先创建数组。
在您的新方法中,将arraylist定义为ArrayList<Component> c = new ArrayList<Component>();
。另请检查ToolbarPool.getDefault().findToolbar("AddEditDelete").getComponents())
是否返回正确的非空Component
对象。