2011-04-18 5 views
0

BorderLayout을 사용하여 JFrameJTextField을 추가했습니다.
이제 JTextField의 위치를 ​​알고 싶습니다.JFrame에서 JTextField의 좌표를 가져 오는 중

나는 getX()getLocation()을 사용했지만 둘 다 0인데 정확한 답이 아닙니다.
어떻게 그 위치를 얻을 수 있습니까?

+0

왜 당신이 그 정보를 원하십니까? 또는 최종 사용자에게 제공하려는 기능은 무엇이며 (최종 사용자가 ** JTextField가있는 곳을 ** 잊어 버리지 않고 잊어 버리지 말고 말할 필요가 없습니다)? –

답변

2

사용하려면 , 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 
+1

예를 들어, BorderLayout 제약 조건에 "Center"를 하드 코딩해서는 안됩니다. – camickr

+0

@camickr 네가 맞아. 나는 물건을 더 간단하게하려고 노력하고 있었다. 어쨌든, 이것은 예제의 초점이 아닙니다. –

+0

@camickr 왜 센터를 하드 코드하는 것이 좋지 않습니까? – Ramses

2

getLocation() 메소드는이 경우 부모와 관련된 구성 요소의 위치를 ​​컨텐츠 분할 창에 제공하므로 위치는 실제로 0이 될 수 있습니다. 또한 프레임이 표시 될 때까지 메소드를 호출 할 수 없습니다.

당신은 프레임에 대한 상대적인 위치는 당신이 필요로하는 아래의 예 (부모 컨테이너에 상대의 좌표를 반환해야합니다 구성 요소합니다 (JTextField)에 getLocation()를 호출

SwingUtilities.convertPoint(...); 
+0

+1 그 방법에 대해 감사합니다 고마워. – Boro

관련 문제