我可以知道如何确定是否在JPanel中找到了某个组件?
boolean isThisComponentFoundInJPanel(Component c)
{
Component[] components = jPanel.getComponents();
for (Component component : components) {
if (c== component) {
return true;
}
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
使用循环效率不高.有没有更好的方法?
kdg*_*ory 13
if (c.getParent() == jPanel)
Run Code Online (Sandbox Code Playgroud)
如果您不想要直接的父子关系(在精心设计的面板中可能就是这种情况),请递归调用.
...虽然在一个设计良好的面板中,为什么你需要知道面板中是否包含一个组件,这是非常值得怀疑的.
此操作的性能不太可能成为瓶颈。
查看容器中的内容可能表明设计不良。告诉 GUI 做什么,不要询问它的状态。
编写代码的更好方法可能是使用现有例程。虽然存在一些开销,但它们更有可能已经编译(因此可能更快)并且代码更少。
boolean isComponentInPanel(Component component) {
return
java.util.Arrays.asList(panel.getComponents())
.contains(component);
}
Run Code Online (Sandbox Code Playgroud)
(或者使用 kdgregory 的答案。)
| 归档时间: |
|
| 查看次数: |
9790 次 |
| 最近记录: |