java - 如何在任何布局 Java Swing 中获取任何组件的绝对位置?

标签 java swing jbutton point autocompletetextview

也许这是一个愚蠢的问题,但我花了好几个小时来尝试。我有任何 JFrame,里面有她的组件。这个 JFrame 可以有任何布局。我的问题很简单 我有这个窗口:在图像中我使用绝对布局来了解真实位置。

enter image description here

我想知道按钮的位置。我正在使用 GridBagLayout,当我执行 button.getY() 或 button.getX() 时,我在 X 或 Y 中有 0 个。但是如果我使用绝对布局,我没有问题。

如果我使用 absoluteLayout 我知道我没有这个问题。但我想使用任何布局并知道框架中任何组件的绝对位置。

我真的想做一个自动完成的文本字段(就像你写搜索时的谷歌),当我在文本字段中写入时,我想在文本字段下面显示其他窗口 jframe 与巧合。

如果我知道任何文本字段的绝对位置,我就可以计算出该位置并显示新窗口。

感谢大家。

最佳答案

SwingUtilities.convertPoint() 之一方法应该做你想做的。以下示例打印 java.awt.Point[x=54,y=22]

image

JFrame f = new JFrame("Test");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(new JLabel("Test"), BorderLayout.WEST);
JButton b = new JButton("Test");
f.add(b);
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
System.out.println(SwingUtilities.convertPoint(b, b.getX(), b.getY(), f));

关于java - 如何在任何布局 Java Swing 中获取任何组件的绝对位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21661583/

相关文章:

java - 从按钮菜单选项返回一个值

java - 在 JButton 之间共享状态

java - 为什么我的 Tomcat 6 执行器线程池没有被连接器使用?

java - 调整 JFrame 大小时撕裂 - 这可以避免或改进吗?

java - 追加到 JTextArea?

java - 在国际象棋java中移动棋子

java swing 认证失败

java - 分割字符串而不忽略空格

java - Powermock junit5 和mockito2.x 不工作 RunnerTestSuiteChunker 未找到

java - 在没有最终修饰符的情况下更改按钮颜色onclick