JFrame

예숑·2023년 12월 3일
0

JAVA - GUI

목록 보기
2/8
post-thumbnail

⭐️JFrame


JFrame 이란?
→ 기본적으로 창(윈도우)를 띄울 때 나타내는 클래스
→ 보이지 않는 창(프레임)을 생성한다.
→ 기본적으로 BorderLayout 을 가지고 있다.
(예를 들어 JButton을 만들어서 위치와 크기를 설정해서 Contianer에 부착해도 layout-manager 가 자기가 가진 룰대로 바꿔버린다.
⇒ JButton의 위치와 크기를 지정 후 부착 후 값을 출력해보면 알 수 있다.)
→ 보통 JPanel 를 만들어서 각각의 패널에 다른 Layout을 써서 하나의 Frame에 각기 다른 Layout 을 가진 Panel 들이 들어가게 한다.

💜Frame 생성 시 메소드

  1. setTitle(String title)
    → 프레임의 제목을 설정해준다.
    → 생성자에 넣어도 가능하다.

  2. setSize(int width, int height)
    →창의 크기를 설정해준다.
    → 오른쪽으로 갈수록 x의 값이 증가하고, 아래로 내려갈수록 y의 값이 증가한다.
    → 자바에서는 왼쪽 모서리의 좌표를 나타내며, 왼쪽 모서리(0,0)이 기본값이다.
    → 크기를 잘 모를때는 pack( ) 을 쓰면 알아서 맞는 크기를 지정해준다.
    new Dimension(int width, int height) : 가로,세로를 하나로 표현한 것
    → Dimension 객체에 변수로 저장되어 있어서 출력해보면 값이 나온다.

  3. setLocation(int x, int y)
    → 창의 위치를 설정해준다.
    → Location 은 절대적인 위치를 말한다.
    setLocationRelativeTo(null) : 어떤 것이 잘못되었을 때 중간으로 오게 함.
    new Point(int x, int y) : x, y 좌표를 하나로 표현한 것
    → Point 객체에 변수로 저장되어 있어서 출력해보면 값이 나온다.
    new Rectangle(int x, int y, int width, int height) : 위치와 크기를 한번에 설정가능하다.
    setBounds(Rectangle r) or setBounds(int x, int y, int width, int height)

  4. setDefaultCloseOperation(int 상수)
    →창의 종료에 대한 기능을 설정해준다.
    1) JFrame.EXIT_ON_CLOSE : 프로그램 종료
    2) JFrame.DISPOSE_ON_CLOSE : 해당창만 종료
    3) JFrame.HIDE_ON_CLOSE : 가시성 제거(default) - 있는데 눈에만 보이지 않게 하는 것
    4) JFrame.DO_NOTHING_ON_CLOSE : 아무것도 하지마라.

  • 창이 뜨기는 하지만 닫기를 눌러도 안됨.(제일 많이 쓰임)
    ⇒ 상수로 되어있는 이유 : 안의 값을 몰라도 사용 가능하다.
  1. setVisible(boolean b)
    → 가시성을 부여해준다.
    → 보이지 않는 프레임을 생성하므로 가시성을 부여해줘야 한다.
    → 제일 마지막에 해줘야 한다.
    ⇒ 프레임을 만들고 있는 도중에 실행하면 만들어지는 과정을 보이게 되고 그러면 그래픽 카드 성능이 좋지않은 컴퓨터에서는 잔상이 남는다. 그러므로 모든 설정이 완료된 후에 해주는 것이 좋다.

  2. setResizable(boolean b)
    → 창의 크기 조정 여부를 정할 수 있다.
    → boolean 값을 false로 하면 창의 크기를 고정시킬 수 있다.


setExtendedState(JFrame.MAXIMIZED_BOTH) : 창의 크기를 최대화(전체화면으로) 해준다.
⇒ 이때, 사이즈를 지정 해줘야한다. 지정해주지 않으면 사이즈를 줄일 때 찌그러지는 현상을 볼 수 있다.

→ add( ) : Container 에 부착시켜준다.

위 설명보고 만들어보기!


import javax.swing.JFrame;

public class MyJFrameEx1 extends JFrame{
	
	public static void main(String[] args) {
		JFrame frame = new JFrame();
		
		frame.setTitle("Title");
		frame.setSize(300,300);
		frame.setLocation(100, 100);
		frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
		frame.setVisible(true);
	}
}

⭐️JPanel

→ JPanel 의 기본 Layout 은 FlowLayout 이다.

⭐️JButton

→ 버튼을 생성해준다.
→ 버튼 생성 시 하나하나 하면 힘들다. 그러므로 반복문을 이용해서 반복 시켜 배열로 처리해주면 된다.

import java.awt.BorderLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class MyJFrameEx1 extends JFrame{
	
	public static void main(String[] args) {
		JFrame frame = new JFrame();
		
		JButton btn = new JButton("Button");
		
		JPanel pnlCenter = new JPanel();
		pnlCenter.add(btn);
		
		frame.add(pnlCenter, BorderLayout.CENTER);
		
		frame.setTitle("Title");
		frame.setSize(300,300);
		frame.setLocation(100, 100);
		frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
		frame.setVisible(true);
	}
}

0개의 댓글