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