old/Programming
자바 화면 JFrame 화면 중앙에 띄우기
은색거북이
2016. 11. 19. 10:52
반응형
자바 프레임을 모니터 중앙에 띄우는 방법은 여러가지가 있다.
이 중 가장 많이 알려져 있는 방법은 모니터와 자바 프레임의 길이를 뺀뒤 1/2하는 방법이다.
일단 밑의 코드를 보자.
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Toolkit;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class test {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setSize(300, 300);
// --------------------[프레임 위치 설정하는 코드]----------------------
// 프레임(자바 화면) 크기
Dimension frameSize = frame.getSize();
// 모니터 크기
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
// (모니터화면 가로 - 프레임화면 가로) / 2, (모니터화면 세로 - 프레임화면 세로) / 2
frame.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2);
// ----------------------------------------------------------------------
// 레이블 생성
JLabel label = new JLabel("안드로이드 아님. 자바임.", JLabel.CENTER);
// 레이블을 프레임에 추가
frame.add(label, BorderLayout.CENTER);
// 프레임 보이기
frame.setVisible(true);
}
}
잘 작동 하지만... 이 방법은 낭비가 심하다. 자바API를 찾아보면위 3줄짜리 코드는 더 쉽게 할수 있는게 있는데 그게 바로 java.awt.Window에 있는 setLocationRelativeTo 이라는 메서드다.
이를 이용하면 단 한줄로 대체가능하다.
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class test {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setSize(300, 300);
// --------------------[프레임 위치 설정하는 코드]----------------------
frame.setLocationRelativeTo(null);
// ----------------------------------------------------------------------
// 레이블 생성
JLabel label = new JLabel("안드로이드 아님. 자바임.", JLabel.CENTER);
// 레이블을 프레임에 추가
frame.add(label, BorderLayout.CENTER);
// 프레임 보이기
frame.setVisible(true);
}
}
자바 api (https://docs.oracle.com/javase/7/docs/api/java/awt/Window.html#setLocationRelativeTo(java.awt.Component))를 이용해 보자.
반응형