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

时间:2014-02-09 16:21:06

标签: java swing jbutton point autocompletetextview

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

enter image description here

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

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

我真的想做一个自动完成的textField(比如google,当你写入搜索时),当我在TextField中写字时,我想在文本字段下面显示其他窗口jframe的巧合。

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

感谢所有人。

2 个答案:

答案 0 :(得分:8)

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));

答案 1 :(得分:0)

我认为本教程对你的要求有一个答案...... http://javadevwannabe.blogspot.gr/2012/02/using-absolute-positioning.html