java - 获取 swing 组件的位置

标签 java swing jpanel layout-manager

我已将一些 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/

相关文章:

java - 为什么 List<Number> 不是 List<Object> 的子类型?

java - 更新 JList

java - 如何使用 Spring boot 实现 AWS Secret Manager?做这个的最好方式是什么?

java - MouseListener:判断是否 mousePressed .getSource() == MouseReleased .getSource()

java - Swing:在Jtable中,当光标向下移动时,JScroll栏也应该向下移动?

java - 画更大的人物

java - 为什么我只能在 GUI 构造函数中更改按钮背景颜色?

java - 可视化数组列表

Java-removeIf 示例

java - 删除 Jtable 中的行后出错