coding/[2021.08.02~2022.01.24] 수업복습

[수업 17일차] 21.08.25 GUI(화면구현),컨테이너, 컴포넌트, 프레임 AWT, Swing

꽃무늬라떼 2021. 8. 26. 01:38
13_GUI

package : sist

class : Ex01

 

x 를 눌러도 닫히지 않는 방법 ==> Terminate를 눌러 줘야한다.

 * java GUI(Graphic User Interface)
 * - 이미지 혹은 그래픽을 이용하여 메뉴 들을 포함하는 화면을 구성하고, 
 *   키보드와 마우스 등의 편리한 입력 도구를 이용하여 사용자가 입력하기 
 *   편하도록 만들어진 사용자 인터페이스임.
 * - java에서는 AWT와 Swing 으로 어떠한 언어보다 강력한 GUI 라이브러리를 제공하여 
 *   소프트웨어 개발자들이 다양한 GUI를 쉽게 구성할 수 있도록 해 주고 있음.
 *   
 *   
 * AWT와 Swing
 * - 자바 언어는 GUI 프로그램을 쉽게 작성할 수 있도록 다양한 GUI 컴포넌트들을 제공함.
 *   자바 GUI 컴포넌트는 AWT 컴포넌트와 Swing 컴포넌트로 구분이 됨.
 *   
 *   
 * 1. AWT 컴포넌트 : - java.awt 패키지를 통하여 공급이 됨.
 *  	          - 운영체제의 도움을 받아 화면에 출력되기 때문에 운영체제의
 *                  자원을 많이 소모하여 운영체제에 많은 부담을 주게 됨.
 *                - 운영체제마다 컨포넌트의 모양이 다르게 나타남.
 * 2. Swing 컴포넌트 : - javac.swing 패키지를 통하여 공급이 됨.
 *                  - AWT와 다르게 자바 언어로 작성이 되었음.
 *                  ==> Sun 사와 네스케이프라는 회사가 공동으로 개발함.
 *                  - 운영체제의 도움을 받지 않았음. ==> 경량 컴포넌트라고 불림.
 *                  - 운영체제와 관계없이 항상 동일한 모양이 나타남.
 *                  - AWT에는 없는 풍부한 고급 Swing 컴포넌트들을 추가적으로 
 *                    개발을 하였음
 *                  - 다양하고 모양이 예쁜 Swing 컴포넌트들을 더 많이 사용함.
 *                    ==> 최근에는 거의 모든 GUI 프로그램이 Swing 기반으로
 *                        작성이 됨.
 */



 /*  
 *  
 *  GUI에서 알아두어야 할 용어 -3가지 
 *  1. 컴포넌트 : 버튼, 텍스트상자, 레이블상자, 옵션박스,
 *             체크박스 , 라디오버튼 등을 말함.
 *  2. 컨테이너 : 컴포넌트들을 담을 수 있는 클래스.
 *             ==> 컴포넌트는 반드시 컨테이너에 올려져야 화면에 보여짐.
 *  3. 프레임 : 컨테이너들을 담을 수 있는 클래스.
 *            ==> 컨테이너는 반드시 프레임에 올려져야 화면에 보여짐.
 */

/*
 * Frame을 만드는 방법 - 첫번째 
 * 1. Frame 이라는 클래스를 상속을 받아서
 *    생성자를 통하여 화면에 Frame을 보여주는 방법
package sist;

import java.awt.Frame;

/*
 * java GUI(Graphic User Interface)
 * - 이미지 혹은 그래픽을 이용하여 메뉴 들을 포함하는 화면을 구성하고, 
 *   키보드와 마우스 등의 편리한 입력 도구를 이용하여 사용자가 입력하기 
 *   편하도록 만들어진 사용자 인터페이스임.
 * - java에서는 AWT와 Swing 으로 어떠한 언어보다 강력한 GUI 라이브러리를 제공하여 
 *   소프트웨어 개발자들이 다양한 GUI를 쉽게 구성할 수 있도록 해 주고 있음.
 *   
 *   
 * AWT와 Swing
 * - 자바 언어는 GUI 프로그램을 쉽게 작성할 수 있도록 다양한 GUI 컴포넌트들을 제공함.
 *   자바 GUI 컴포넌트는 AWT 컴포넌트와 Swing 컴포넌트로 구분이 됨.
 *   
 *   
 * 1. AWT 컴포넌트 : - java.awt 패키지를 통하여 공급이 됨.
 *  	          - 운영체제의 도움을 받아 화면에 출력되기 때문에 운영체제의
 *                  자원을 많이 소모하여 운영체제에 많은 부담을 주게 됨.
 *                - 운영체제마다 컨포넌트의 모양이 다르게 나타남.
 * 2. Swing 컴포넌트 : - javac.swing 패키지를 통하여 공급이 됨.
 *                  - AWT와 다르게 자바 언어로 작성이 되었음.
 *                  ==> Sun 사와 네스케이프라는 회사가 공동으로 개발함.
 *                  - 운영체제의 도움을 받지 않았음. ==> 경량 컴포넌트라고 불림.
 *                  - 운영체제와 관계없이 항상 동일한 모양이 나타남.
 *                  - AWT에는 없는 풍부한 고급 Swing 컴포넌트들을 추가적으로 
 *                    개발을 하였음
 *                  - 다양하고 모양이 예쁜 Swing 컴포넌트들을 더 많이 사용함.
 *                    ==> 최근에는 거의 모든 GUI 프로그램이 Swing 기반으로
 *                        작성이 됨.
 */



 /*  
 *  
 *  GUI에서 알아두어야 할 용어 -3가지 
 *  1. 컴포넌트 : 버튼, 텍스트상자, 레이블상자, 옵션박스,
 *             체크박스 , 라디오버튼 등을 말함.
 *  2. 컨테이너 : 컴포넌트들을 담을 수 있는 클래스.
 *             ==> 컴포넌트는 반드시 컨테이너에 올려져야 화면에 보여짐.
 *  3. 프레임 : 컨테이너들을 담을 수 있는 클래스.
 *            ==> 컨테이너는 반드시 프레임에 올려져야 화면에 보여짐.
 */

/*
 * Frame을 만드는 방법 - 첫번째 
 * 1. Frame 이라는 클래스를 상속을 받아서
 *    생성자를 통하여 화면에 Frame을 보여주는 방법
 */


public class Ex01_Frame extends Frame {

	public Ex01_Frame() {
	
		//프레임에 제목을 설정하는 방법
		super("첫번째 예제");
		
		// 프레임의 위치를 설정하는 방법
		setLocation(200, 200);   //(가로로 얼마나 띄었는지 세로로 얼마나 띄었는지)
		
		// 프레임의 크기를 설정하는 방법
		setSize(300, 300);

		// 프레임을 화면에 보여주어야 함.
		setVisible(true);
		
		
		
		
		
		
		
	}
	
	public static void main(String[] args) {
		
		
		new Ex01_Frame();

	}

}
13_GUI

package : sist

class : Ex02

package sist;

import java.awt.Frame;

/*
 * Frame을 만드는 방법 - 두번째
 * - Frame 이라는 클래스의 객체를 생성하여 사용
 */

public class Ex02_Fram {

	public static void main(String[] args) {
		
		Frame frame = new Frame("두번째 예제");
		
		//프레임에 제목 설정
		frame.setTitle("두번째 예제");
		
		
		// 프레임의 위치
		//frame.setLocation(200,200);
		
		//프레임의 크기
		//frame.setSize(300,300);
		
		// 프레임의 위치 + 프레임의 크기
		frame.setBounds(200, 200, 300, 300);
		
		
		// 프레임을 화면에 보여주기
		frame.setVisible(true);

	}

}

 

13_GUI

package : sist

class : Ex03

 

x 를 누르면 닫히는 방법 ==> Terminate 불이 꺼지지않기 때문에 꺼줘야한다.

package sist;

import javax.swing.JFrame;

public class Ex03_JFrame extends JFrame{

	public Ex03_JFrame() {
		setTitle("세번째 예제");
		
		setBounds(200, 200, 300, 300);
	
		setVisible(true);
	
	}
	
	
	public static void main(String[] args) {
		
		new Ex03_JFrame();

	}

}
13_GUI

package : sist

class : Ex04

package sist;

import javax.swing.JFrame;

public class Ex04_JFrame {

	public static void main(String[] args) {
		
		JFrame jFrame = new JFrame();
		
		jFrame.setTitle("네번째 예제");
		
		jFrame.setBounds(200, 200, 300, 300);
		
		jFrame.setVisible(true);			//(기본적으로 false값)

	}

}
13_GUI

package : sist

class : Ex05

 

x 를 눌러도 꺼지지않음 ==> Terminate 로 꺼줘야한다.

package sist;

import java.awt.*;

public class Ex05_Button extends Frame {

	public Ex05_Button() {
		
		setTitle("Button 예제");
		
		//컨테이너를 만들어 보자.
		Panel panel = new Panel();
		
		// 1. 컴포넌트를 만들어 보자.
		Button button1 = new Button("버튼1");
		
		
		// 2. 컴포넌트를 컨테이너에 올려야 한다.
		panel.add(button1);
				
				
		// 3. 컨테이너를 프레임에 올려야 한다.
		add(panel);
		
		setBounds(200, 200, 300, 300);
		
		setVisible(true);
		
	}
	
	public static void main(String[] args) {
		
		new Ex05_Button();
		

	}

}
13_GUI

package : sist

class : Ex06

 

x 를 누르면 닫히는 방법 ==> Terminate 불이 꺼지지않기 때문에 꺼줘야한다.

package sist;

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

public class Ex06_JButton extends JFrame {

	public Ex06_JButton() {
		setTitle("Jbutton 예제");
		
		//컨테이너를 만들어야 한다. 
		JPanel container = new JPanel();
		
		// 1. 컴포넌트를 만들자.
		JButton button1 = new JButton("버튼1");
		JButton button2 = new JButton("버튼2");
		JButton button3 = new JButton("버튼3");
		
		// 2. 컨테이너에 컴포넌트를 올려야 한다.
		container.add(button1);
		container.add(button2);
		container.add(button3);
		
		
		// 3. 프레임에 컨테이너를 올려야 한다.
		add(container);
		
		setBounds(200, 200, 300, 300);
		
		setVisible(true);
	}
	
	public static void main(String[] args) {
	
		new Ex06_JButton();

	}

}
13_GUI

package : sist

class : Ex07

 

다중 클릭 + x 로 닫힘 + Terminate 눌러주기

package sist;

import javax.swing.*;

public class Ex07_JCheckBox extends JFrame{

	public Ex07_JCheckBox() {
		
		setTitle("JCheckBox 예제");
		
		// 컨테이너를 만들자
		JPanel contaner = new JPanel();
		
		// 1. 컴포넌트를 만들어 보자. 	
		//(디폴드 값으로 어떤값이 선택되어지게 나오고 싶을때는 true라고 쓰면된다.)
		JCheckBox jcb1 = new JCheckBox("게임");
		JCheckBox jcb2 = new JCheckBox("여행",true);
		JCheckBox jcb3 = new JCheckBox("영화감상");
		JCheckBox jcb4 = new JCheckBox("운동");
		JCheckBox jcb5 = new JCheckBox("잠자기");
		
		// 2. 컨테이너에 컴포넌트를 올려야 한다. 
		contaner.add(jcb1);contaner.add(jcb2);
		contaner.add(jcb3);contaner.add(jcb4);
		contaner.add(jcb5);
		
		
		// 3. 프레임에 컨터이너를 올려야 한다.
		add(contaner);
		
		setBounds(200, 200, 300, 300);
		
		setVisible(true);
		
	}
	
	public static void main(String[] args) {
		new Ex07_JCheckBox();

	}

}
13_GUI

package : sist

class : Ex08

다중 클릭 + x 로 닫힘 + 프레임 종료(Terminate 안 눌러도됨)

package sist; 
import javax.swing.*;


public class Ex08_JCheckBox extends JFrame {
	
	public Ex08_JCheckBox() {
		setTitle("과일 체크박스 예제");
		
		//컨테이너를 만들자.
		JPanel container = new JPanel();
		
		//1-1 과일 이미지 아이콘을 만들어 보자. 
		ImageIcon kiwi = new ImageIcon("images/kiwi.jpg");
		ImageIcon mango = new ImageIcon("images/mango.jpg");
		ImageIcon apple = new ImageIcon("images/apple.jpg");
		
		
		
		//1-2 컴포넌트를 만들어 보자.
		JCheckBoxMenuItem jcb1 = 
				new JCheckBoxMenuItem("키위", kiwi);
		JCheckBoxMenuItem jcb2 = 
				new JCheckBoxMenuItem("망고", mango);
		JCheckBoxMenuItem jcb3 = 
				new JCheckBoxMenuItem("사과", apple);
		
		
		//2. 컨테이너에 컴포넌트를 올려야 한다. 
		container.add(jcb1);
		container.add(jcb2); container.add(jcb3);
		
		
		
		//3. 프레임에 컨테이너를 올려야 한다. 
		add(container);
		
		setBounds(200, 200, 300, 600);
		
		// 프레임의 크기를 고정시키는 메서드
		setResizable(false);		
		
		// 프레임의 x버튼 클릭 시 종료시키는 메서드
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		setVisible(true);
		
	}

	public static void main(String[] args) {
		new Ex08_JCheckBox();

	}

}
13_GUI

package : sist

class : Ex09

다중 클릭 + x 로 닫힘 + 프레임 종료(Terminate 안 눌러도됨)

package sist;

import javax.swing.*;


public class Ex09_JRadioButton extends JFrame {

		public Ex09_JRadioButton() {
	
			setTitle("JRadioButton 예제");
			
			JPanel container = new JPanel();
			
			//1. 컴포넌트를 만들자. 
			JRadioButton jrb1 = new JRadioButton("게임");
			JRadioButton jrb2 = new JRadioButton("여행");
			JRadioButton jrb3 = new JRadioButton("운동",true);
			JRadioButton jrb4 = new JRadioButton("잠자기");
			
			// 라디오버튼은 반드시 ButtonGroup에 올려져야 한다.		
            //(하나만 선택이 되도록)
			ButtonGroup bg = new ButtonGroup();
			bg.add(jrb1);bg.add(jrb2);
			bg.add(jrb3);bg.add(jrb4);
			
			
			//2. 컨테이너에 컴포넌트를 올려야 한다. 
			container.add(jrb1);container.add(jrb2);
			container.add(jrb3);container.add(jrb4);
			

			//3. 프레임에 컨테이너를 올려야 한다.
			
			add(container);
			
			setBounds(200, 200, 300, 300);
			
			setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
			setVisible(true);
			
}	
	
	public static void main(String[] args) {
		new Ex09_JRadioButton();

	}

}
13_GUI

package : sist

class : Ex10

 

 토글버튼 : 누르면 켜지고 또 누르면 꺼지는 버튼 

package sist;

import javax.swing.*;

public class Ex10_JToggleButton extends JFrame {

	public Ex10_JToggleButton() {
	
		setTitle("JToggleButton 예제");
		
		//컨테이너를 만들자
		JPanel container = new JPanel();
		
		//1. 컴포넌트를 만들자.
		JToggleButton jtb1 = new JToggleButton("토글버튼1");
		JToggleButton jtb2 = new JToggleButton("토글버튼2");
		JToggleButton jtb3 = new JToggleButton("토글버튼3");
		
		//2. 컨테이너에 컴포넌트를 올려야 한다.
		container.add(jtb1);
		container.add(jtb2);
		container.add(jtb3);
		
		
		//3. 프레임에 컨테이너를 올려야 한다. 
		add(container);
		
		setBounds(200, 200, 300, 300);
		
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		setVisible(true);
		
}
	
	public static void main(String[] args) {

		new Ex10_JToggleButton();

	}

}
13_GUI

package : sist

class : Ex11

package sist;

import javax.swing.*;

public class Ex11_JComboBox extends JFrame{
	public Ex11_JComboBox() {
	
		setTitle("JComboBox 예제");
		
		//컨테이너를 만들자. 
		JPanel container = new JPanel();
		
		//1. 컴포넌트를 만들자.
		String[] job = {"회사원", "공무원", "학생", "주부","무직","기타"};
		
		JComboBox<String> jcb = new JComboBox<String>(job);
		
		
		//JComboBox 에서 초기값을 설정하는 방법
		//jcb.setSelectedIndex(3);		//(어떤 인덱스를 먼저 보이게 할지)
		jcb.setSelectedItem("공무원");    //(초기값으로 디폴트 되어서 나오게 하는 방법)
		
		
		//2. 컨테이너에 컴포넌트르 올려야 한다. 
		container.add(jcb);
		
		
		//3. 프레임에 컨테이너를 올려야 한다. 
		add(container);
		
		setBounds(200, 200, 300, 300);

		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		setVisible(true);
}
	
	public static void main(String[] args) {
		new Ex11_JComboBox();
	}

}
13_GUI

package : sist

class : Ex12

package sist;

import javax.swing.*;

public class Ex12_JList extends JFrame {

	//(list로 뽑아내는 방식)
	
	public Ex12_JList() {
		setTitle("JList 예제");
		
		//컨테이너를 만들자.
		JPanel container = new JPanel();
		
		//1. 컨포넌트를 만들자. 
		String[] job = {"회사원", "공무원", "학생", "주부","무직","기타"};
		
		JList<String> list = new JList<String>(job);
		
		//2. 컨테이너에 컴포넌트를 올려야 한다. 
		container.add(list);
		
		//3. 프레임에 컨테이너를 올려야 한다.
		add(container);
		
		setBounds(200, 200, 300, 300);
		
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		setVisible(true);
		
		
	}
	public static void main(String[] args) {
		
		new Ex12_JList();

	}

}
13_GUI

package : sist

class : Ex13

 

package sist;

import javax.swing.*;

public class Ex13_JLabel_JTextField extends JFrame {

	public Ex13_JLabel_JTextField() {
		setTitle("JLabel_JTextField 예제");
		
		//컨테이너를 만들자
		JPanel container = new JPanel();
		
		//1. 컴포넌트를 만들자.
		JLabel jl1 = new JLabel("이 름 : ");
		JTextField name = new JTextField(15);//(몇자리)
		
		JLabel jl2 = new JLabel("학 과 : ");
		JTextField major = new JTextField(15);
		
		JLabel jl3 = new JLabel("주 소 : ");
		JTextField address = new JTextField(15);
		
		
		
		//2. 컨테이너에 컴포넌트를 올려야 한다.
		container.add(jl1); container.add(name);
		container.add(jl2); container.add(major);
		container.add(jl3); container.add(address);
		
		
		
		//3. 프레임에 컨테이너를 올려야 한다.
		add(container);
		
		setBounds(200, 200, 250, 200);
		
		setVisible(true);
		
	}
	
	public static void main(String[] args) {


		new Ex13_JLabel_JTextField();

	}

}
13_GUI

package : sist

class : Ex14

package sist;

import javax.swing.*;

public class Ex14_JTable extends JFrame {
 
	public Ex14_JTable() {
	
		//JTable 컴포넌트는 컨테이너에 올리지 않고 
		// 바로 JFrame에 올려주면 된다.
		
		//1. 컴포넌트를 만들자. 
		String[] header = 
			{"학생이름", "국어점수", "영어점수","수학점수","JAVA점수"};
		
		String[][] contents = {
				{"홍길동","94","88","90","90"},
				{"이순신","90","72","89","90"},
				{"유관순","91","71","90","90"},
				{"김유신","88","67","78","90"},
				{"김연아","97","98","90","90"},
				{"강감찬","71","70","66","90"},
				{"세종대왕","100","100","100","90"},
				{"백종원","89","85","97","90"},
				{"유재석","94","80","83","90"},
				{"강호동","80","80","80","90"},
				
		};
		
		JTable table = new JTable(contents, header);
		
		// 1-1. 스크롤바 기능을 만들어 보자. 
		JScrollPane jsp = new JScrollPane(
				table, 			// 스크롤바가 보여질 컴포넌트
				
				//수직으로 스크롤바를 보여줄 여부를 확인(o)
				ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,		 
				
				//수평으로 스크롤바를 보여줄 여부를 확인(x)
				ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);		

		
		// 2. 프레임에 JTable을 올려주면 된다.
		add(jsp);
		
		setBounds(200, 200, 400, 150);
		
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		setVisible(true);
}
	
	public static void main(String[] args) {
		
		new Ex14_JTable();

	}

}
13_GUI

package : sist

class : Ex15

package sist;

import java.awt.Color;

import javax.swing.*;

public class Ex15_JTabbedPane extends JFrame {

	public Ex15_JTabbedPane() {
		
		JTabbedPane tab = new JTabbedPane();
		
		// 1. 탭의 갯수만큼 컨테이너가 있어야 한다.
		JPanel container1 = new JPanel();
		JPanel container2 = new JPanel();
		JPanel container3 = new JPanel();
		
		// 1-1. 컨테이너마다 배경색을 다르게 지정해 보자. 
		container1.setBackground(Color.ORANGE);
		container2.setBackground(Color.GRAY);
		container3.setBackground(Color.PINK);
		
		// 2. 컴포넌트를 만들어 보자. 
		// 2-1. 첫번째 탭에 들어갈 컴포넌트를 만들어 보자. 
		JButton jb1 = new JButton("버튼1");
		JButton jb2 = new JButton("버튼2");
		JButton jb3 = new JButton("버튼3");
		
		// 2-1-1. 첫번째 탭에 올려질 컴포넌트를 컨테이너에 올려야 한다.
		container1.add(jb1);
		container1.add(jb2);container1.add(jb3);
		
		
		// 2-2. 두번째 탭에 들어갈 컴포넌트를 만들어 보자. 
		JCheckBox jcb1 = new JCheckBox("여행");
		JCheckBox jcb2 = new JCheckBox("운동");
		JCheckBox jcb3 = new JCheckBox("게임");
		JCheckBox jcb4 = new JCheckBox("잠자기");
		
		// 2-1-2. 두번째 탭에 올려질 컴포넌트를 컨테이너에 올려야 한다. 
		container2.add(jcb1);container2.add(jcb2);
		container2.add(jcb3);container2.add(jcb4);
		
		// 2-3. 세번째 탭에 들어갈 컴포넌트를 만들어 보자. 
		JLabel jl1 = new JLabel("이  름 : ");
		JTextField name = new JTextField(15);
		
		JLabel jl2 = new JLabel("연락처 : ");
		JTextField phone = new JTextField(20);
		
		JLabel jl3 = new JLabel("주 소 : ");
		JTextField addr = new JTextField(20);
		
		
		//2-1-3. 세번째 탭에 올려질 컴포넌트를 컨테이너에 올려야 한다. 
		container3.add(jl1);container3.add(name);
		container3.add(jl2);container3.add(phone);
		container3.add(jl3);container3.add(addr);
		
		
		//3.각가의 컨테이너들을 탭에 올려주어야 함
		tab.add("버튼 탭",container1);
		tab.add("체크박스 탭",container2);
		tab.add("개인정보 탭",container3);
		
		// 4. 프레임에 탭을 올려야 한다. 
		add(tab);
		
		setBounds(200, 200, 300, 300);
		
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		setVisible(true);
		
	}
	
	
	public static void main(String[] args) {
		
		new Ex15_JTabbedPane();
	}

}
13_GUI

package : sist

class : Ex16

메모장 처럼 만들기

메뉴 안에 옵션을 넣어준다.

 

package sist;

import javax.swing.*;

public class Ex16_JMenu extends JFrame {
	
	public Ex16_JMenu() {
		
		setTitle("메뉴");
		
		JMenuBar bar = new JMenuBar();
		
		// 1. 메뉴를 만들어 보자.
		JMenu jMenu1 = new JMenu("파일");
		JMenu jMenu2 = new JMenu("글자");
		JMenu jMenu3 = new JMenu("도움말");
		JMenu jMenu4 = new JMenu("글자체");
		JMenu jMenu5 = new JMenu("바탕색");
	
		
		// 2. 메뉴아이템을 만들어 보자. 
		// 2-1. "파일" 이라는 메뉴에 들어갈 메뉴아이템을 만들어 보자.
		JMenuItem jmi1 = new JMenuItem("새파일");
		JMenuItem jmi2 = new JMenuItem("열  기");
		JMenuItem jmi3 = new JMenuItem("저  장");
		JMenuItem jmi4 = new JMenuItem("종  료");
		
		//2-2-1.	"글자 -> 글자체" 라는 메뉴에 들어갈 메뉴 아이템을 만들어 보자.
		JMenuItem jmi5 = new JMenuItem("굴림, 기본, 10");
		JMenuItem jmi6 = new JMenuItem("궁서, 굵게, 20");
		JMenuItem jmi7 = new JMenuItem("돋움, 기울기, 30");
		
		// 2-2-2. "글자 -> 바탕색" 라는 메뉴에 들어갈 메뉴아이템을 만들어 보자.
		JMenuItem jmi8 = new JMenuItem("노란색");
		JMenuItem jmi9 = new JMenuItem("회  색");
		JMenuItem jmi10 = new JMenuItem("초록색");
		
		//2-3. "도움말"이라는 메뉴에 들어갈 메뉴아이템을 만들어 보자.
		JMenuItem jmi11 = new JMenuItem("도움말");
		JMenuItem jmi12 = new JMenuItem("메모장 정보");
		
		// 3. 메뉴아이템(JMenuItem)을 메뉴(JMenu)에 올려주어야 한다.
		// 3-1. "파일" 이라는 메뉴에 들어갈 메뉴아이템을 올리자.
		jMenu1.add(jmi1); jMenu1.add(jmi2); 
		jMenu1.add(jmi3);
		jMenu1.addSeparator();//(선)
		jMenu1.add(jmi4); 
		
		//3-2. "글자체" 라는 메뉴에 들어갈 메뉴아이템을 올리자.
		jMenu4.add(jmi5);jMenu4.add(jmi6);
		jMenu4.add(jmi7);
		jMenu2.add(jMenu4);
		jMenu2.addSeparator();
		jMenu5.add(jmi8);jMenu5.add(jmi9);
		jMenu5.add(jmi10);
		jMenu2.add(jMenu5);
		
		
		// 3-3. "도움말" 메뉴에 들어갈 메뉴아이템을 올려야 한다. 
		jMenu3.add(jmi11);
		jMenu3.addSeparator();
		jMenu3.add(jmi12);
		
		//4. 메뉴바에 메뉴들을 올려주어야 한다.
		bar.add(jMenu1);bar.add(jMenu2);bar.add(jMenu3);
		
		//5. 프레임에 메뉴바를 올려주어야 한다.
		setJMenuBar(bar);//(메뉴바를 세팅한다)
		
		setBounds(200, 200, 300, 300);
		
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		setVisible(true);
		
		
	}

	public static void main(String[] args) {
		new Ex16_JMenu();

	}

}
13_GUI

package : sist

class : Ex17

package sist;

import javax.swing.*;

public class Ex17_ETC extends JFrame{

	public Ex17_ETC() {
		setTitle("기타 예제");
		
		JPanel container = new JPanel();
		
		//1. 컴포넌트를 만들어 보자.
		JLabel jl1 = new JLabel("아이디 : ");
		JTextField id = new JTextField(10);
		
		JLabel jl2 = new JLabel("비밀번호 : ");
		JPasswordField pwd = new JPasswordField(10);
		
		JLabel jl3 = new JLabel("하고 싶은 말 : ");
		JTextArea jta = new JTextArea(5,20);
		
		JScrollPane jsp = new JScrollPane(
				jta, 	// 스크롤바가 보여질 컨포넌트

				//수직으로 스크롤바를 보여줄 여부를 확인(o)
				ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, 
				//수평으로 스크롤바를 보여줄 여부를 확인(x)
				ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
		
		//JTextArea 컴포넌트에서 자동 줄바꿈 하는 기능을 제공하는 메서드
		jta.setLineWrap(true);
		
		
		//2. 컨테이너에 컴포넌트를 올려야 한다.
		container.add(jl1); container.add(id);
		container.add(jl2); container.add(pwd);
		container.add(jl3); container.add(jsp);
		
		//3. 프레임에 컨테이너를 올려야 한다.
		add(container);
		
		setBounds(200, 200, 250, 300);
		
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		setVisible(true);
		
	}
	
	public static void main(String[] args) {
		
		new Ex17_ETC();

	}

}
13_GUI

package : sist

class : Ex18

package sist;

import java.awt.FlowLayout;

import javax.swing.*;

/*
 * 배치관리자(Layout)?
 * - 화면(Frame)에 컴포넌트들을 배치하는 방법을 알려주는 관리자.
 * - 대표적인 배치관리자의 종류
 *   1) FlowLayout
 *   2) BorderLayout
 *   3) GridLayout
 *   4) CardLayout
 * 
 */

/*
 * 1. FlowLayout 배치관리자
 * 	- 배치 : 좌 -> 우
 *  - 상단 중앙에 컴포넌트를 배치를 한다.
 *  - 화면에 넘칠 경우에는 바로 밑(아래) 중앙에 배치가 됨.
 *  - 배치관리자를 지정하지 않은 경우, default로 
 *    FlowLayout 배치관리자로 배치를 함
 */

public class Ex18_FlowLayout extends JFrame {

	public Ex18_FlowLayout() {
		setTitle("FlowLayout 배치관리자");
		
		JPanel container = new JPanel();
		
		// 1. 컴포넌트를 만들어 보자.
		JButton button1 = new JButton("버튼1");
		JButton button2 = new JButton("버튼2");
		JButton button3 = new JButton("버튼3");
		JButton button4 = new JButton("버튼4");
		
		// 2. 컨테이너에 컴포넌트를 올려야 한다.
		// 형식) new FlowLayout()			(기본생성자 호출)
		//      new FlowLayout(정렬 - 왼쪽, 오른쪽, 중앙(default))
		//      new FlowLayout(정렬, 수평간격, 수직간격)
		//			* 수평간격 : 좌우 컴포넌트 사이의 간격. 픽셀단위- 기본값은 5px
		
		container.setLayout(new FlowLayout(FlowLayout.CENTER,20,10));//(배치관리자가 flowlayout이 된다)
		container.add(button1); container.add(button2);
		container.add(button3);container.add(button4);
		
		//3. 프레임에 컨테이너를 올려야 한다. 
		add(container);
		
		setBounds(200, 200, 300, 300);
		
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		setVisible(true);
		
		
	}
	
	public static void main(String[] args) {
		new Ex18_FlowLayout();

	}

}
13_GUI

package : sist

class : Ex19

package sist;

import java.awt.BorderLayout;

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

/*
 * 2. BorderLayout 배치 관리자
 * 		- 배치 : 동쪽, 서쪽, 남쪽, 북쪽, 중앙
 */

public class Ex19_BorderLayout extends JFrame{
public Ex19_BorderLayout() {
	setTitle("BorderLayout 배치관리자");
	
	JPanel container = new JPanel();
	
	// 1. 컴포넌트를 만들어보자.
	JButton button1 = new JButton("North");
	JButton button2 = new JButton("South");
	JButton button3 = new JButton("East");
	JButton button4 = new JButton("West");
	JButton button5 = new JButton("Center");
	
	//2. 컨테이너에 컴포넌트를 올려야 한다. 
	// 형식) new BorderLayout()
	//      new BorderLayout(수평간격, 수직간격) //(픽셀 = 해상도)
    //      - 수평간격 : 좌우 컴포넌트 사이의 간격(픽셀단위) - 기본값은 0
	//      - 수직간격 : 상하 컴포넌트 사이의 간격(픽셀단위) - 기본값은 0
	container.setLayout(new BorderLayout(20,30));
	
	container.add(button1,BorderLayout.NORTH);	//컨테이너의 상단에 배치
	container.add(button2,BorderLayout.SOUTH);	//컨테이너의 하단에 배치
	container.add(button3,BorderLayout.EAST);   //컨테이너의 오른쪽에 배치
	container.add(button4,BorderLayout.WEST);	//컨테이너의 왼쪽에 배치
	container.add(button5, BorderLayout.CENTER); //컨테이너의 중앙에 배치
	
	// 3. 프레임에 컨테이너를 올려야 한다.
	add(container);
	
	setBounds(200, 200, 300, 300);
	
	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	
	setVisible(true);
	
}
	public static void main(String[] args) {
		new Ex19_BorderLayout();
		

	}

}
13_GUI

package : sist

class : Ex20

package sist;

import java.awt.GridBagLayout;
import java.awt.GridLayout;

import javax.swing.*;

/*
 *  3. GridLayout 배치관리자
 *  	- 격자 모양의 배치관리자. 
 *  	- 행과 열로 화면이 구성이 됨.
 *  	- 기준 : 무조건 행이 기준이 됨.
 */

public class Ex20_GridLayout extends JFrame {

	public Ex20_GridLayout() {
	
		setTitle("GridLayout 배치관리자");
		
		JPanel container = new JPanel();
		
	
		// 1. 컴포넌트를 만들어 보자.
		JButton button1 = new JButton("1");
		JButton button2 = new JButton("2");
		JButton button3 = new JButton("3");
		JButton button4 = new JButton("4");
		JButton button5 = new JButton("5");
		JButton button6 = new JButton("6");
		JButton button7 = new JButton("7");
		JButton button8 = new JButton("8");
		JButton button9 = new JButton("9");
		JButton button10 = new JButton("*");
		JButton button11 = new JButton("0");
		JButton button12 = new JButton("#");
		
		
		
		// 2. 컨테이너에 컴포넌트를 올려야 한다.
		// 형식)
		// 		new GridLayout(행 수, 열 수)
		//		new GridLayout(행 수, 열 수, 수평간격, 수직간격)
		//          수평간격 : 좌우 컴포넌트 사이의 간격(픽셀 단위) - 기본값은 0
		//          수직간격 : 상하 컴포넌트 사이의 간격(픽셀 단위) - 기본값은 0
		container.setLayout(new GridLayout(4,3,5,5));//(4행3열)
		
		container.add(button1);container.add(button2);
		container.add(button3);container.add(button4);
		container.add(button5);container.add(button6);
		container.add(button7);container.add(button8);
		container.add(button9);container.add(button10);
		container.add(button11);container.add(button12);
		
		
		
		//3. 프레임에 컨테이너를 올려야 한다.
		add(container);
		
		setBounds(200, 200, 300, 300);
		
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		setVisible(true);
}
	
	public static void main(String[] args) {
		new Ex20_GridLayout();

	}

}

 

 

 

swing.JFrame

 

Terminate를 안해도 닫힌다.

 

앞에 J자가 안붙어있음 AW사에서 제공하는 

J자가 붙으면 Javx.swing 패키지에서제공

한글 입력되는 arguments

 

 

한글 입력되는 arguments (한글 폰트 깨지지 않는 방법)

properities - Arguments - VM arguments : -Dfile.encoding=MS949 입력

 

 

 

 

 

 

 

 

 

 

 

 

 

이 한문장으로 모든것을 import

 

토글버튼

한번 누르면 켜지고 한번 더 누르면 꺼지는