AWT 윈도우에 다음 컴포넌트를 추가해보겠습니다.

 

- 체크박스,초이스,리스트,캔바스,스크롤바,메뉴바

 

만들면서 느끼겠지만 기본적인 추가법은 같습니다. 체크박스를 추가하고 싶다? 그럼 Checkbox 객체를 생성하고 위치를 잡아줍니다. 위치는 Frame 을 기준으로 잡습니다. add(Checkbox 객체) 로 Frame 에 추가합니다. 체크박스를 더 추가한다면 new로 객체를 하나 더 생성하여 반복합니다. 필요한 만큼의 반복을 하는겁니다. Component 객체에서 물려받은 setBounds 메소드를 반복 사용하므로 익숙해질 것입니다. Component 클래스의 직계들이기 때문에 각기 다른 자손들이지만 사용법이 거의 같습니다.

 

계층도
Component 클래스

https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html

 

Component (Java Platform SE 8 )

Requests that this Component get the input focus, if this Component's top-level ancestor is already the focused Window. This component must be displayable, focusable, visible and all of its ancestors (with the exception of the top-level Window) must be vis

docs.oracle.com

 

약간은 긴 코드지만 반복하는 내용이기 때문에 큰 어려움은 없을 것 입니다.

 

이번 포스트는 컴포넌트를 구현하는 것 까지 하고 이벤트처리기는 별도로 다룹니다.

package com.kay.array;


import java.awt.Canvas;
import java.awt.Checkbox;
import java.awt.Choice;
import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.List;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.Scrollbar;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;


public class AwtGUI2 extends Frame {
	
	AwtGUI2(){
		
		// Checkbox
		
		Checkbox cb1 = new Checkbox("Java AWT");
		cb1.setBounds(100, 100, 80, 50);
		Checkbox cb2 = new Checkbox("Java Swing");
		cb2.setBounds(100, 150, 80, 50);

		add(cb1);
		add(cb2);
		
		// Choice
		
		Choice c1 = new Choice();
		c1.setBounds(100, 200, 150, 75);
		c1.add("Java");
		c1.add("Ruby");
		c1.add("Python");
		c1.add("JS");
		
		add(c1);
		
		// List
		
		List l1 = new List(3);
		l1.setBounds(100, 250, 75, 55);
		l1.add("list 1");
		l1.add("list 2");
		l1.add("list 3");
		
		add(l1);
		
		// Canvas
		
		Canvas cv1 = new Canvas();
		cv1.setBounds(300, 100, 250, 250);
		cv1.setBackground(Color.LIGHT_GRAY);

		add(cv1);
		
		// Scrollbar
		
		Scrollbar scr1 = new Scrollbar();
		scr1.setBounds(500, 400, 30, 200);
		
		add(scr1);
		
		//MenuBar
		
		MenuBar mb1 = new MenuBar();
		Menu mn1 = new Menu("MENU");
		MenuItem m1 = new MenuItem("new file");
		MenuItem m2 = new MenuItem("save");
		MenuItem m3 = new MenuItem("close");
		MenuItem m4 = new MenuItem("edit");
		MenuItem m5 = new MenuItem("exit");
		
		mn1.add(m1);
		mn1.add(m2);
		mn1.add(m3);
		mn1.add(m4);
		mn1.add(m5);
		
		mb1.add(mn1);
		
		setMenuBar(mb1);
		setTitle("JAVA AWT GUI 2");
		setSize(650,700);
		setLayout(null); //currently no layout
		setBackground(Color.cyan);
		setVisible(true);
		
		addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				dispose();
			}
		});
	}
	
	public static void main(String[] args) {
		AwtGUI2 ag1 = new AwtGUI2();
		System.out.println("Right away, sir");
	}

}

1) Checkbox (체크박스)

 

Checkbox

체크박스를 생성자 안에서 구현합니다. 생성자에 들어가는 문자열은 체크박스의 이름입니다. 체크박스는 아이템을 여러개 선택할 수 있습니다. setBounds는 좌측 상단의 끝에서 x축 , y축, 너비, 높이 값을 입력받습니다.

*Checkbox는 그룹으로 묶으면 라디오버튼이 됩니다. 라디오버튼은 주어진 아이템에서 한개만 선택할 수 있습니다. 아래과 같이 객체를 생성하여 Checkbox 클래스의 생성자에 참조변수를 넘겨줍니다. true 값이 있는 아이템이 선택됩니다.

 

 

2) Choice (초이스)

 

Choice

초이스는 메뉴형식으로 선택할 수 있습니다. add로 아이템을 추가할 수 있습니다.

 

3) List (리스트)

 

리스트
리스트

리스트는 넓게 볼 수 있습니다. 선택은 한개가 됩니다.

 

4) Canvas (캔바스)

 

캔바스
캔바스

캔바스는 말그대로 그림을 그리는 공간입니다. setBackground 로 배경색을 설정할 수 있습니다. AWT의 Graphics 클래스를 구현하여 그래픽을 표현할 수 있습니다.

 

https://docs.oracle.com/javase/8/docs/api/java/awt/Graphics.html

 

Graphics (Java Platform SE 8 )

Fills a closed polygon defined by arrays of x and y coordinates. This method draws the polygon defined by nPoint line segments, where the first nPoint - 1 line segments are line segments from (xPoints[i - 1], yPoints[i - 1]) to (xPoints[i], yPoints

docs.oracle.com

5) Scrollbar (스크롤바)

 

스크롤바입니다. 스크롤바를 움직이면 이벤트처리기가 세밀하게 작동합니다. (이벤트처리기는 다른 포스트에서 다룰 예정)

 

6) MenuBar (메뉴바)

 

메뉴바

메뉴바는 프레임 좌측 상단에 걸리는 메뉴바입니다. MenuBar에 Menu를 걸고 MenuItem 객체를 하나씩 추가하여 Menu에 등록합니다. 서브메뉴도 만들수 있습니다. java.awt 패키지입니다.

 

메뉴까지 알아봤습니다. 코딩은 한번이라도 직접해봐야 의미가 있습니다. 머리로 이해하는 것과 직접 쳐서 체감하는 것과는 다릅니다. 그럼 읽어주셔서 감사합니다~!

공유하기

facebook twitter kakaoTalk kakaostory naver band