모니터 해상도에 관계없이 JFrame이 가운데에 나타나도록 설정하는 방법은 무엇입니까? [닫은]


197

Java로 작업하는 동안 응용 프로그램을 시작할 때 기본 창을 화면 중앙에 배치하기가 어렵습니다.

내가 할 수있는 방법이 있습니까? 그것은 수직 중심 일 필요는 없으며, 수평 정렬이 저에게 더 중요한 목표입니다. 그러나 수직 정렬도 환영합니다.

답변:


232

나는 항상 이런 식으로했다 :

Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
this.setLocation(dim.width/2-this.getSize().width/2, dim.height/2-this.getSize().height/2);

thisJFrame은 어디에 관련되어 있습니까 ?


1
이 답변이 실제로 오래되었지만 정적 컨텍스트 에서이 작업을 수행 할 수있는 방법이 있습니까? 나는 그것을 향한 노력을하거나 어떤 이유로 든 공공 정적 void main (String [] args)을 버리는 것을 결정하고 있습니다.
2xedo

14
이것은 단일 모니터 설정에서 작동하지만 듀얼 모니터의 경우 두 모니터를 가로 지르는 것처럼 보일 수 있습니다 (동일한 해상도라고 가정). 를 사용 setLocationRelativeTo(null)하면 다중 모니터 설정에서도 기본 모니터의 중앙에 배치됩니다.
Rangi Keen

1
중앙에 놓기 전에 JFrame이 보이도록 설정해야합니다.
헌터 S

4
@HunterS : 이것은 올바르지 않습니다. 실제로 중앙에 놓인 후에 만 ​​표시되도록 설정하는 것이 좋습니다. 이런 식으로 표시되지 않고 이동합니다. 이 답변의 코드 앞에 프레임을 포장하거나 치수를 설정하면 괜찮습니다.
Erick Robertson

520

사용하다 setLocationRelativeTo(null)

이 메소드는 a를 전달할 때 특별한 효과가 있습니다 null. Javadoc에 따르면 :

구성 요소가 null이거나이 구성 요소와 관련된 GraphicsConfiguration이 null 인 경우 창은 화면 중앙에 배치됩니다.

크기를 설정하거나을 호출 한 후 다음 pack()과 같이 표시하도록 설정하기 전에 수행해야합니다 .

frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);

102
pack () 메소드를 사용하는 경우 +1, setLocationRelativeTopack () 메소드 호출 후에 사용해야 함
Ravindra Gullapalli

6
@Imray는 이중 모니터 구성에서 작동하지 않을 수 있습니다. : P
Ankit

17
그 메소드는 다음에 호출되어야합니다 .setSize().
Kamil

6
이것은 다중 모니터 설정에서 작동하며 주석에 명시된대로 pack () 및 setSize () 후에 호출되어야합니다.
Paul Gregoire 1

2
@Ankit 듀얼 모니터 설정과 완벽하게 작동합니다. "최상의"답변은 항상 OP에서 선택합니다.
Kent


29

양식을 클릭하고 JFrame 속성으로 이동 한 다음 코드 탭으로 이동하여 확인하십시오 Generate Center.

여기에 이미지 설명을 입력하십시오


나는 이것에 대해 생각하지 않았다. 어쨌든, 우리가 이것을 클릭 한 후에 자체적으로 작동하는 코드는 어떻습니까? @HenkVanBoeijen
gumuruh

11

이만큼 간단합니다 ...

setSize(220, 400);
setLocationRelativeTo(null);  

또는 프레임을 사용하는 경우 프레임을

frame.setSize(220, 400);
frame.setLocationRelativeTo(null);  

명확히하기 위해 문서에서 :

구성 요소가 null이거나이 구성 요소와 관련된 GraphicsConfiguration이 null 인 경우 창은 화면 중앙에 배치됩니다.


7

NetBeans IDE 7.2.1을 개발자 환경으로 사용하고 있으며 JForm 속성을 구성하는 옵션이 있습니다.

JForm 속성에서 '코드'탭으로 이동하여 '생성 센터'를 구성하십시오. 먼저 양식 크기 정책을 '크기 조정 코드 생성'으로 설정해야합니다.


6

NetBeans IDE 7.3을 사용하고 있는데 이것이 JFrame을 중앙 집중화하는 방법입니다. JFrame 패널을 클릭하고 JFrame 속성 표시 줄로 이동 한 다음 코드 표시 줄을 클릭하고 센터 생성 확인란을 선택하십시오.


2

NetBeans를 사용하는 경우 디자인보기에서 프레임을 클릭 한 다음 해당 속성의 코드 탭을 클릭하십시오. 다음으로 'Generate Center'를 확인하십시오. 작업이 완료됩니다.


1

명시 적 setPreferredSize(new Dimension(X, Y));으로 사용하면 다음을 사용하는 것이 좋습니다.

setLocation(dim.width/2-this.getPreferredSize().width/2, dim.height/2-this.getPreferredSize().height/2);


1

이 방법을 사용하면 JFrame을 동시에 중앙에 배치하고 전체 화면으로 만들 수 있습니다.

yourframe.setExtendedState(JFrame.MAXIMIZED_BOTH);

0

Net Beans GUI에서-jframe으로 이동하고 ( 네비게이터 에서 jFrame마우스 오른쪽 단추 로 ) 특성 아래 코드 에서 양식 크기 정책 특성을 선택 하십시오. 크기 조정 코드 생성을 선택 하십시오 . 같은 창에서 Untick Generate Position (생성 위치 생성)Generate Size and Center (크기 및 중심 생성)를 선택 합니다.

프로그래밍을 즐기십시오. 라마나

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.