我已将一些 JPanel 放入另一个 JPanel 中,其布局为 Box Layout 和 Y 轴。 放置所有面板后,我需要从 JPanel 容器面板中获取每个添加的 JPanel 的 Y 位置。但是,当我试图得到它时,每个 JPanel 的 Y 位置总是为零。请告诉我如何从 JPanel 容器 JPanel 中获取每个 Jpanel 的 Y 位置。
这是我做的,
JPanel panelHolder = new JPanel(new BoxLayout(this, BoxLayout.Y_AXIS));
for(int i = 0; i< 10; i++){
JPanel p = new JPanel();
panelHolder.add(p);
}
int componentCount = panelHolder.getComponentCount();
for (int j = 0; i < componentCount ; j++) {
Component c = pnlRowHolder.getComponent(i);
JPanel p = (JPanel)c;
System.out.println(p.getY());//I get zero for all
}
最佳答案
坐标是相对于它们的父对象的。在您的示例中,所有子组件都被添加到父容器的顶部,使 y 位置为 0(相对于它们的父容器)。
尝试向父容器添加一个空边框,您应该会看到 y 位置发生变化。
您可以使用 SwingUtilities.convertPoint
在坐标系之间转换
关于java - 获取 swing 组件的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12589824/