만자의 개발일지

[Java/Swing] 2강) 프레임(컨테이너)에 컴포넌트 추가하기 본문

Java/Swing

[Java/Swing] 2강) 프레임(컨테이너)에 컴포넌트 추가하기

박만자 2021. 5. 28. 21:27

저번 포스팅에서는 JFrame 클래스를 사용해서 프레임을 띄워보았다.

이번 포스팅에서는 프레임에 컴포넌트들을 추가하고 어떻게 다루는지 한번 같이 해보도록 하자.😀

 

시작하기에 앞서 일단 Swing에서의 프레임과 컴포넌트의 관계를 알아보도록 하자

프레임(컨테이너)과 컴포넌트의 관계

 

Swing에서는 프레임이지만 좀더 포괄적으로 이해하기 쉽도록 컨테이너로 설명하도록 하겠습니다.

컨테이너와 컴포넌트를 구분 짓는것은 간단합니다.

 

Swing에서는 JFrame을 제외한 모든 요소들을 컴포넌트라고 생각하시면 됩니다.

위 그림을 보면 

Container

- JFrame, JDialog <- 그림엔 없지만 이 아이도 컨테이너랍니다 ㅎㅎ..

 

Component

- JPanel(JPanel의 경우 다른 컴포넌트들을 포함할 수 있기 때문에 컨테이너이면서 컴포넌트입니다),

JButton, JTextField, JLabel, JTextArea, JCombobox, JScrollPane 등등..

으로 나눌 수 있겠네요

 

컨테이너와 컴포넌트의 개념에 대해 좀더 자세히 설명하자면

 

● 컨테이너: 다른 컴포넌트들을 포함할 수 있는 컨테이너 ex)JPanel

● 최상위 컨테이너:다른 컨테이너에 속하지 않고 다른 컴포넌트들을 포함할 수 있는 컨테이너 ex)JFrame, JDialog

● 컴포넌트: 컴포넌트는 다른 컴포넌트를 포함할 수 없으며, 컨테이너에 포함되어야 화면에 출력되는 객체

 

 

자 개념에 대한 설명은 이쯤으로하고 바로 실습으로 넘어가 봅시다

이번 강의에서는 JFrame에 컴포넌트들을 어떻게 추가하는지에 대해서 간단하게 해보도록 하겠습니다.

 

프레임(컨테이너)에 컴포넌트 추가

import java.awt.FlowLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;

public class SwingExam extends JFrame{
	
	JButton btn = new JButton("버튼1");     
	JTextField tf = new JTextField(15); // 15는 textfield 길이 입니다.
	
	public SwingExam() {
		super("테스트");
		setSize(300,300);
		setLayout(new FlowLayout());
		
		add(tf);
		add(btn);   //add(Component) add메서드로 컨테이너에 컴포넌트를 추가할 수 있습니다.
		
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setLocationRelativeTo(null);
		setVisible(true);
	}
	
	
	public static void main(String[] args) {
		new SwingExam();
	}
}	

실행결과

JFrame을 설정해주는 기본메서드들을 잘 모르시겠다면 저번 강의를 참고해주세요 ㅎㅎ

https://yoo11052.tistory.com/41?category=928768 

 

Java/Swing 1강) 프레임 생성하기

Swing을 들어가기에 앞서 Swing이 무엇인지 부터 알아보자😀 Swing이란? Swing은 AWT 기반으로 GUI를 보다 쉽게 구현할 수 있도록 도와주는 순수 자바 라이브러리이다. Swing은 AWT 기반이기 때문에 AWT와 1

yoo11052.tistory.com

JButton 과 JTextField객체를 각각 하나씩 생성하고 JFrame에있는 add(Component)라는 메서드로 JFrame에 컴포넌트를 추가해봤습니다.

 

이렇게 컴포넌트들을 추가하고싶을때에는 add(Component) 메서드를 이용하시면 됩니다.

별로 어렵지 않죠?ㅎㅎ 

 

다음강의에서는 컴포넌트들의 위치를 지정해주는 layout에 대해서 다뤄보도록 하겠습니다.

setLayout(new FLowLayout())은 지금은 몰라도 됩니다 ㅎㅎ..

 

😃😃

Comments