我为JLabels和AbstractButtons编写了MnemonicsBuilder类。我想编写一个方便的方法setMnemonics( JFrame f )
,该方法将遍历JFrame的每个子级并选择JLabels和AbstractButtons。如何获得对JFrame中包含的所有内容的访问权限?我试过了:
LinkedList<JLabel> harvestJLabels( Container c, LinkedList<JLabel> l ) {
Component[] components = c.getComponents();
for( Component com : components )
{
if( com instanceof JLabel )
{
l.add( (JLabel) com );
} else if( com instanceof Container )
{
l.addAll( harvestJLabels( (Container) com, l ) );
}
}
return l;
}
在某些情况下,这很好。在其他情况下,它会耗尽内存。我在想什么呢?有没有更好的方法来搜索子组件?我的递归有缺陷吗?这不是Swing中事物如何“包含”其他事物的图片吗?例如,Swing不是一棵有根的树吗?
JFrame
|
|\__JMenuBar
| |
| \__JMenu
| |
| \__JMenuItem
|
|\__JPanel
| |
| |\__JButton
| |
| |\__JLabel
| |
| |\__ ... JCheckBoxes, other AbstractButtons, etc.
在这里与Tom保持一致…您的问题是,您已经传递了List
将JLabel
s 添加到递归方法中,并且还返回了它-
因此将相同的项多次添加到您的列表中。用更政治上正确的术语来说-这List
是您的累加器。
您的方法应如下所示:
public void harvestJLabels(Container c, List<JLabel> l) {
Component[] components = c.getComponents();
for(Component com : components) {
if(com instanceof JLabel) {
l.add((JLabel) com);
} else if(com instanceof Container) {
harvestJLabels((Container) com, l));
}
}
}
然后,您可以使用一个辅助方法来启动此收获:
public List<JLabel> harvestJLabels(Container c) {
List<JLabel> jLabels = new ArrayList<JLabel>();
harvestJLabels(c, jLabels);
return jLabels;
}
如何遍历不同类对象的ArrayList以搜索特定类? productionDate是在基类中实现的接口。 这是代码,但它不打印任何东西:)
问题内容: 我从查询中得到以下结果,并在plsql块中浏览记录并向客户发送send_email。 匿名块 我想知道最好的方法是重复查询结果,而不是发送多封电子邮件,而是发送一封包含相关详细信息的电子邮件。例如,在上述情况下SMITH重复两次,所以用上面的方法将史密斯拿到两封电子邮件,而不是我想发一封电子邮件与和 我怎样才能做到这一点? 问题答案: 为此,请不要在PL / SQL的循环内进行循环-使
问题内容: 有一段时间的魔鬼试图解决这个问题。我在这里问了类似的问题:Swift:获取特定类型的所有子视图并添加到数组中 在执行此操作的同时,我意识到有很多子视图和子子视图,因此我需要一个从主UIView开始的功能,循环遍历所有子视图(及其子视图,直到没有剩余的子视图)并将其添加到一个自定义按钮类的数组,我将其命名为CheckCircle。 本质上,我想结束于CheckCircles数组,这些数组
问题内容: 我有很多任意大小的数组。这是一个正方形阵列。我正在尝试掌握如何像a 而不是a 那样对角地遍历(我已经知道该怎么做)。到目前为止,我有以下代码: 我有三个循环,因为这是我做另一个对角线的方式: 在尝试中,我不断超越边界并获取ElementOutOfBounds异常。假设阵列如下(3x3而不是500x500): 我想将以下内容打印为字符串: 先前的SO问题对于整数数组也有类似的问题,解决方
问题内容: 对于Java开发人员来说,这必须是一个非常基本的问题,但是在给定 类名* 的情况下找到合适的 jar文件 的最佳方法是什么? * 例如,给定“ com.ibm.websphere.security.auth.WSSubject ”,您如何跟踪适当的jar文件?(“ google”不是我要找的答案!) 在Java文档不给jar文件的任何暗示,明显的jar文件的名称本身不提供线索。 在Ja
本文向大家介绍如何遍历jQuery中的数组和对象?,包括了如何遍历jQuery中的数组和对象?的使用技巧和注意事项,需要的朋友参考一下 要遍历jQuery中的数组和对象,请使用jQuery循环。您可以尝试运行以下代码以了解如何遍历数组和对象- 示例