본문 바로가기
JAVA/개념정리

[JAVA] Swing의 JFrame

by JJH0100 2022. 10. 13.
728x90
반응형

Ex01. JButton

package SwingEx;

import java.awt.*;
import javax.swing.*; //swing에서 제공하는 java프레임

public class MyFrame2 extends JFrame{
	public MyFrame2 (){
		Container ct = getContentPane();
		JButton jb = new JButton("첫번째 버튼");
		ct.add(jb);
		
		this.setSize(300, 400); //크기설정
		this.setDefaultCloseOperation(EXIT_ON_CLOSE); //닫기 버튼 기능 : J프레임에서 제공
		this.setVisible(true); //창화면 보이기
	}
	public static void main(String[] args) {
		new MyFrame2();
	}
}

닫기 기능이 가능한 가로 300x 세로400 크기의 창을 표시.

버튼을 생성. 

 

 


 

Ex02. setBackground

package SwingEx;

import java.awt.*;
import javax.swing.*;

public class MyFrame2 extends JFrame{
	public MyFrame2 (){
		Container ct = getContentPane();
		ct.setBackground(Color.orange);
		ct.setLayout(new FlowLayout());
		JButton jb1 = new JButton("첫번째 버튼");
		JButton jb2 = new JButton("두번째 버튼");
		JButton jb3 = new JButton("세번째 버튼");
		ct.add(jb1);
		ct.add(jb2);
		ct.add(jb3);
		
		this.setSize(600, 400);
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		this.setVisible(true);
	}
	public static void main(String[] args) {
		new MyFrame2();
	}
}

닫기 기능이 가능한 가로 600x 세로400 크기의 창을 표시.

FlowLayout에 창의 배경에 orange색을 설정하고 버튼 3개 생성. 

FlowLayout은 화면의 가운데부터 배치되는 것으로 AWT에서 지원하는 기능이다. 

위 화면을 줄이면 위와 같이 버튼이 정렬되는 것을 확인 할 수 있다.

 

 


 

Ex03. FlowLayout

package SwingEx;

import java.awt.*;
import javax.swing.*;

public class FlowLayoutTest1 extends JFrame{
	public FlowLayoutTest1 (){
		Container ct = getContentPane();
		ct.setLayout(new FlowLayout());
		for(int i=1; i<15; i++) {
			ct.add(new JButton("버튼" + i));
		}		
		this.setSize(500, 300);
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		this.setVisible(true);
	}
	public static void main(String[] args) {
		new FlowLayoutTest1();
	}
}

닫기 기능이 가능한 가로 500x 세로400 크기의 창을 표시.

FlowLayout에 for문을 사용해 버튼 14개 생성. 

 

 

Ex03_02. FlowLayout 간격

FlowLayout의 형태는 new FlowLayout(FlowLayout.정렬방향,가로간격,수직간격) 이다. 위에서 ct.setLayout(new FlowLayout()); 부분을 아래와 같이 바꾸어 주었다.

ct.setLayout(new FlowLayout(FlowLayout.RIGHT,10,15));

가로로 정렬 된 것을 볼 수 있다. 이때 버튼 사이의 가로간격은 10, 위아래 간격은 15이다.

 

 


 

Ex04. BorderLayout

package SwingEx;

import java.awt.*;
import javax.swing.*;

public class BorderTest extends JFrame{
	public BorderTest (){
		Container ct = getContentPane();
		ct.setLayout(new BorderLayout());
		ct.add(new JButton("오른쪽 버튼"), BorderLayout.EAST);
		ct.add(new JButton("왼쪽 버튼"), BorderLayout.WEST);
		ct.add(new JButton("위쪽 버튼"), BorderLayout.NORTH);
		ct.add(new JButton("아래쪽 버튼"), BorderLayout.SOUTH);
		ct.add(new JButton("가운데 버튼"), BorderLayout.CENTER);
		
		this.setSize(500, 400);
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		this.setVisible(true);
	}
	public static void main(String[] args) {
		new BorderTest();
	}
}

닫기 기능이 가능한 가로 500x 세로400 크기의 창을 표시.

BorderLayout을 사용하여 화면을 구분. 각각의 위치에 버튼을 생성한다. 

저 버튼들 사이에 간격을 주고 싶을때는?

 

 

Ex04_02. BorderLayout 간격

ct.setLayout(new BorderLayout(10, 10));

가로, 세로의 간격을 위와 같이 입력해준다.

 

 


 

Ex05. GridLayout, JLabel, JTextField

package SwingEx;

import java.awt.*;
import javax.swing.*;

public class GridLayoutTest extends JFrame{
	public GridLayoutTest (){
		Container ct = getContentPane();
		ct.setLayout(new GridLayout(4, 2));
		ct.add(new JLabel("이름"));
		ct.add(new JTextField());
		ct.add(new JLabel("학번"));
		ct.add(new JTextField());
		ct.add(new JLabel("학과"));
		ct.add(new JTextField());
		ct.add(new JLabel("과목"));
		ct.add(new JTextField());
		
		this.setSize(300, 200);
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		this.setVisible(true);
	}
	public static void main(String[] args) {
		new GridLayoutTest();
	}
}

닫기 기능이 가능한 가로 300x 세로200 크기의 창을 표시.

GridLayout으로 화면을 구분. 

 

 

 

Ex05_02. GridLayout 간격

ct.setLayout(new GridLayout(4, 2, 0, 10));

728x90
반응형

'JAVA > 개념정리' 카테고리의 다른 글

[JAVA] Swing : MouseEvent  (0) 2022.10.13
[JAVA] Swing : 외부선언, 내부선언  (0) 2022.10.13
[JAVA] AWT와 Swing  (0) 2022.10.13
[JAVA] 추상(abstract) 클래스와 오버라이딩  (0) 2022.10.13
[JAVA] 추상화 abstract  (0) 2022.10.13

댓글