Java 如何从带有GridBagLayout的JPanel中获取位于特定gridx、gridy中的组件?

Java 如何从带有GridBagLayout的JPanel中获取位于特定gridx、gridy中的组件?,java,swing,user-interface,gridbaglayout,Java,Swing,User Interface,Gridbaglayout,我有一个带有gridbaglayout布局的jpanel,其中有几个jtextfields、几个jLabel和几个动态添加的JButton。因此,我无法知道它们的具体顺序,因此无法使用panel.getComponent(count)。我查看了api中是否有类似getGridx(intx)或getGridy(inty)的内容。没有找到。有类似的方法吗?最简单的解决方案可能是使用并简单地循环所有组件,直到找到一个与所需网格位置匹配的组件 Component match = null; GridBa

我有一个带有gridbaglayout布局的jpanel,其中有几个jtextfields、几个jLabel和几个动态添加的JButton。因此,我无法知道它们的具体顺序,因此无法使用panel.getComponent(count)。我查看了api中是否有类似getGridx(intx)或getGridy(inty)的内容。没有找到。有类似的方法吗?

最简单的解决方案可能是使用并简单地循环所有组件,直到找到一个与所需网格位置匹配的组件

Component match = null;
GridBagLayout layout = ...
for (Component comp : getComponents()) {
    GridBagConstraints gbc = layout.getConstraints(comp);
    if (gbc.gridx = x && gbc.gridy = y) {
        match = comp;
        break;
    }
}

最简单的解决方案可能是使用并简单地遍历所有组件,直到找到一个与所需网格位置匹配的组件

Component match = null;
GridBagLayout layout = ...
for (Component comp : getComponents()) {
    GridBagConstraints gbc = layout.getConstraints(comp);
    if (gbc.gridx = x && gbc.gridy = y) {
        match = comp;
        break;
    }
}

我在代码中多次使用这种情况,并且消耗了太多的循环。这是不好的。我已经编辑了我的问题。“getGridx(intx)或getGridy(inty)”而不是getGridx(),getGridy()。也就是说,我需要自己放置这些x和y。另一个解决方案是创建某种类型的
地图
,您可以使用它进行反向查找。基本上,当您添加一个组件时,将其x/y位置记录到
映射中,然后使用它进行查找…根据您的评论,我建议您至少会有3个
映射
映射
映射
mapY
maxy
…我在代码中多次使用这种情况,并且消耗了太多的循环。这是不好的。我已经编辑了我的问题。“getGridx(intx)或getGridy(inty)”而不是getGridx(),getGridy()。也就是说,我需要自己放置这些x和y。另一个解决方案是创建某种类型的
地图
,您可以使用它进行反向查找。基本上,当您添加一个组件时,将其x/y位置记录到
映射中,然后使用该位置进行查找…根据您的评论,我建议您将得到至少3个
映射
映射
映射
maxy
。。。。