back/Java

KH 23일차(AWT)

devel0per 2022. 8. 1. 17:27

23일차인 오늘은 AWT를 학습했다.

 

AWT(Abstract Windows Toolkit)

 

 : 사용자가 컴퓨터를 사용하기 위해서는 운영체제의 도움이 필요합니다. 운영체제는 사용자가 컴퓨터를 쉽게 사용할 수 있는 환경을 제공하     는데 이를 Interface라고 하고, 일반적으로 Interface는 CUI, GUI 가 있습니다. CUI 는 DOS 와 같은 텍스트 환경에서 명령어를 직접       입력해 사용하는 방식입니다.

   사용자가 모든 명령어를 외워야한다는 점이 어렵습니다. 결국 사용자와의 접근이 쉽지않아 GUI에 자리를 내어주게 되었습니다.

   GUI는 컴퓨터를 쉽게 사용할 수 있도록 만들어진 기능입니다.

   명령어가 아닌 Icon을 사용해 원하는 작업을 할 수 있습니다.

   

   1980년대 Apple 컴퓨터에서는 mac os 라는 운영체제를 출시했습니다. 이 운영체제는 dos와는 다르게 화면에 있는 그림을 마우스로      클릭해 사용하도록 고안되어 많은 사람들이 쉽게 

   컴퓨터를 사용할 수 있게 되었습니다. 그 이후에 개발된 많은 os도 이러한 그래픽을 이용한 사용자 입력 방식을 도입했습니다. 가장 대표    적인 예가 Window 95 입니다.

   윈도우 95는 완벽한 GUI 환경을 제공했습니다.

   

   자바언어도 GUI를 처리하기 위해 AWT와 Swing 이라는 API를 가지고 있습니다.

   AWT는 운영체제에 상관없이 동일하게 GUI 프로그램을 작성할 수 있지만 운영체제에 따라 모양이 약간씩 다르게 출력됩니다.

   Java2에 새롭게 추가된 GUI 패키지인 Swing은 운영체제에 상관없이 동일하게 작동하고 AWT 보다 깨끗한 GUI 환경을 제공합니다.

   하지만 AWT에 비해 상당히 많은 메모리를 차지 합니다. 또한 AWT를 확장해 만들었기 때문에 AWT를 알아야 자세히 알 수 있습니다.

   

   

 

package ja_0801;

import java.awt.Frame;

public class Frame_1 {
	public static void main(String[] args) {
		
		Frame ff = new Frame("수선화 ~~~");
		ff.setSize(300, 300);
		ff.setVisible(true);
	}
}

(1) 직접 Frame 객체를 생성해서 사용하는방법

 

package ja_0801;

import java.awt.Color;
import java.awt.Frame;

public class Frame_2 extends Frame{
		
		public Frame_2() {
			super("아름다운 사랑~~~~~");
			//setBackground(color.blue);
			//blue 0,0,255 ;
			//Navy 0,0,128 ;
			//Purple 128,0,128;
			setBackground(new Color(0,0,255));
			setLocation(400, 400);
			setSize(300, 300);
			setVisible(true);
		}
			
		public static void main(String[] args) {
			new Frame_2();
		}
}

 

(2)  Frame 객체를 상속받아서 사용하는 방법

 


package ja_0801;

import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;

//public class Button_1 extends Frame{
//	
//	Button btn1, btn2, btn3;
//	
//	public Button_1(String str) {
//		super(str);
//		setLayout(new FlowLayout());
//		
//		btn1 = new Button("가위");
//		btn2 = new Button("바위");
//		btn3 = new Button("보");
//		
//		
//		add(btn1);
//		add(btn2);
//		add(btn3);
//		
//		setSize(300, 300);
//		setVisible(true);
//		
//	}
//	
//	public static void main(String[] args) {
//		new Button_1("가위바위보");
//	}
//}

public class Button_1{
	public static void main(String[] args) {
		
		Frame ff = new Frame("가위바위보");
		ff.setLayout(new FlowLayout());
		
		Button btn1 = new Button("가위");
		Button btn2 = new Button("바위");
		Button btn3 = new Button("보");
		
		ff.add(btn1);
		ff.add(btn2);
		ff.add(btn3);
		
		ff.setSize(300, 300);
		ff.setVisible(true);
		
		
		
	}
}

(1), (2) 번 방식을 모두 활용하여 button 객체를 Frame 객체에 올려주는 모습.

package ja_0801;

import java.awt.Button;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Label;

public class Button_3 extends Frame {
	
	Label[] lbl = new Label[50];
	Button[] btn =  new Button[50];
	
	public Button_3(String str) {
		super(str);
		setLayout(new FlowLayout());
		
		for(int i = 0; i < 50; i ++) {
			
			lbl[i] = new Label(i + "레이블");
			btn[i] = new Button(i + "버튼");	
			
			
			add(lbl[i]);
			add(btn[i]);
			
			// 	버튼은 빨간색, 레이블은 파란색 계열
			
//			lbl[i].setBackground(new Color(255,(int)(Math.random()*256-50+1)+50,(int)(Math.random()*256-50+1)+50));
//			btn[i].setBackground(new Color((int)(Math.random()*256),(int)(Math.random()*256),255));
			
			
		}
		
		setSize(500, 500);
		setVisible(true);
		
	}
	
	public static void main(String[] args) {
		new Button_3("배열 레이블, 버튼 만들기");
	}
}

같은 방법으로 button과 label을 사용하여 Frame 객체에 올려주는 모습