본문 바로가기

old/Programming

자바 화면 JFrame 화면 중앙에 띄우기

반응형
Evernote Export
자바 프레임을 모니터 중앙에 띄우는 방법은 여러가지가 있다. 
이 중 가장 많이 알려져 있는 방법은 모니터와 자바 프레임의 길이를 뺀뒤 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))를 이용해 보자.

반응형