Java 获取jframe上的所有jComponent及其位置

Java 获取jframe上的所有jComponent及其位置,java,swing,jcomponent,Java,Swing,Jcomponent,我想要一个jframe,在它上面动态添加jcomponents,点击一个按钮,我想知道所有可用组件及其位置(或顺序)。 我正在使用这种方法 Component[] components=getContentPane().getComponents(); components.toString(); 但是我得到了一个字符串,其中包含了太多关于组件的信息,我只需要它们的名称(不必使用变量名),它们的类名意味着JLabel lbl;所以我需要JLabel) 以及它们的顺序 它

我想要一个jframe,在它上面动态添加jcomponents,点击一个按钮,我想知道所有可用组件及其位置(或顺序)。 我正在使用这种方法

Component[] components=getContentPane().getComponents();
            components.toString();
但是我得到了一个字符串,其中包含了太多关于组件的信息,我只需要它们的名称(不必使用变量名),它们的类名意味着JLabel lbl;所以我需要JLabel) 以及它们的顺序


它不知道如何从字符串中提取此信息。

所有组件都有一个
getLocation
方法,只需获取组件数组并在其上循环即可

for (Component comp : getContentPane().getComponents()) {
    System.out.println(comp.getLocation());
}
getLocation
方法将返回一个
java.awt.Point
,其中包含组件的x/y坐标


请记住,
getComponents
将只返回即时容器中的组件,它不会自己进行递归搜索…

除非您给
组件添加名称,否则通过
setName
方法,
组件将没有名称。您可以使用
instanceof
(即
if(comp instanceof JLabel){…
)来确定它们的类型,但是您必须猜测它实际上是哪个组件。至于位置,您可以使用
getLocation
…但这些是针对单个组件的。我必须调用getLocation()方法,因为我不知道将有多少组件。它们是动态生成的,使用
for循环
component[]
数组上循环…真的。。。