在JFrame中获取JTextField的坐标

时间:2011-04-18 15:08:57

标签: java swing layout

我使用JTextFieldJFrame中添加了BorderLayout 现在我想知道JTextField的位置。

我使用了getX()getLocation(),但两者都给了我0,这不是正确答案。
那么我该如何获得该位置?

2 个答案:

答案 0 :(得分:2)

getLocation()方法给出组件相对于其父组件的位置,在本例中为内容窗格,因此该位置实际上可能为0.此外,在框架可见之前,您无法调用该方法。

如果您想要相对于框架的位置,则需要使用

SwingUtilities.convertPoint(...);

答案 1 :(得分:2)

在组件中调用getLocation()JTextField)应将其坐标 relative 返回到父容器(在下面的示例中为JFrame)。

注意:在获取坐标之前,您必须在容器(JFrame中执行布局。 /> 只需显示即可完成布局。

示例

JFrame fr = new JFrame("Testing window");
JTextField tf = new JTextField();
fr.add(tf, BorderLayout.CENTER);

fr.setVisible(true); //show the JFrame

Point p = tf.getLocation(); //get the coordinates