티스토리 뷰

25일차인 오늘은 Java AWT를 이용해서 Frame을 만들어봤다.

 

. AWT의 주요 컴포넌트

 

1) Frame

- titlebar와 최소화, 최대화, 닫기 버튼을 가진 윈도우(컨테이너)

- 생성자: Frame(String title)

ex) Frame f = new Frame("Hi") // Hi 프레임 생성

- setSize(int, int): 사이즈 설정

- setLayout(new 레이아웃명()): 레이아웃 설정

- setVisible(true): 프레임 시각화

- 프레임참조변수.add(컴포넌트 참조변수): 컨테이너에 컴포넌트 추가

 

2) Button

- 사용자가 클릭했을 때 작업이 수행되도록 하는 컴포넌트

- 생성자: Button(String label)

- setLocation(int, int): 위치 설정

 

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_2 extends Frame {
	
	Label lbl1, lbl2, lbl3;
	Button btn1, btn2, btn3;
	
	public Button_2(String str) {
		super(str);
		setLayout(new FlowLayout());
		lbl1 = new Label("가위");
		lbl2 = new Label("바위");
		lbl3 = new Label("보");
		
		btn1 = new Button("가위");
		btn2 = new Button("바위");
		btn3 = new Button("보");
		
		add(lbl1);			add(btn1);
		add(lbl2);			add(btn2);
		add(lbl3);			add(btn3);
		
		lbl1.setEnabled(false);
		btn3.setEnabled(false);
		btn2.setBackground(new Color(255, 0, 0));
		btn2.setForeground(new Color(0, 255, 0));
		
		setSize(300, 200);
		setLocation(300, 300);
		setVisible(true);
		
		
	}
	
	public static void main(String[] args) {
		new Button_2("버튼과 레이블");
	}
}

/*

. 버튼(Button)

  : 버튼은 가장 많이 사용되는 GUI 컴포넌트이고, 주로 사용자의 입력을 받을 때 사용합니다. 사용자가 어떤 결정을 내릴때 사용하는 컴포넌트 입니다.
  
  
  생성자
  
  public button()              : 기본 생성자
  public button(String label) : 문자열이 지정된 생성자
  
  
  중요 메소드
  
  public String getLabel()         : 버튼위에 있는 문자열 반환
  public void setLabel(String label)  : 버튼위에	문자열 지정
  public void addActionListener(ActionListener al) : 버튼에서 발생한 ActionEvent를 처리할 수 있도록 등록
  public String getActionCommand(): 버튼에서 이벤트가 발생하면 Command(명령) 이름을 받아 옵니다.
  public void setActionCommand(String cmd) : 버튼에 Command 이름을 설정

*/

 

3) Choice(Combo Box)

- 여러 아이템 중 하나를 선택할 수 있게 만드는 콤보박스 컴퍼넌트

- 생성자: Choice()

- 초이스참조변수.add("속성"): 목록에 값 추가

 

4) List

- 리스트 컴포넌트

- 생성자: List(int rows, boolean multipleMode) // 나타낼 줄의 수, 다중선택 가능 여부

* List(int row)로 생성시 단일선택

- 리스트참조변수.add("속성"): 목록에 값 추가

 

5) Label

- 텍스트를 표시하는 컴포넌트

- 생성자: Label(String text, int alignment) // 텍스트, 정렬방식(정렬방식 미선택 가능)

- 라벨참조변수.setBounds(int, int, int, int) // 가로위치, 세로위치, 가로크기, 세로크기

 

6) Checkbox

- 선택여부를 표현하는 컴포넌트

- 생성자: Checkbox(String text, boolean state) // 텍스트, 생성시 체크 여부(미선택 가능)

- Checkboxgroup으로 생성시 그룹 내 체크박스 중 하나만 선택 가능

- 생성자: Checkboxgroup(String text, CheckboxGroup group, boolean state) // Checkbox 생성자에서 그룹명 추가됨

 

7) TextField

- 사용자로부터 데이터를 입력받을 수 있는 컴포넌트

- 한 줄만 입력 가능

- 생성자: TextField(String text, int col) // 보여질 텍스트, 입력받을 글자 수(크기)

 

8) TextArea

- 여러 줄의 텍스트를 입력하거나 보여줄 수 있는 입력가능한 컴포넌트

- 생성자: TextArea(String text, int row, int col, int scrollbar) // 보여질 텍스트, 행, 열, 스크롤바 사용 여부(행렬만 선택 가능)

- TextArea참조변수.selectAll(): 텍스트 전체 선택

 

package ja_0803;

import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.TextArea;

public class TextField_4 extends Frame{
	
	public TextField_4(String title) {
		super(title);
		
		setLayout(new FlowLayout());
		
		TextArea txt1 = new TextArea("간단한 메모를 입력");
		TextArea txt2 = new TextArea(10, 20);
		TextArea txt3 = new TextArea("문자열,문자열,,,", 5, 30);
		
		add(txt1);
		add(txt2);
		add(txt3)
		
		setSize(500, 500);
		setVisible(true);
		
		
	}
	
	public static void main(String[] args) {
		new TextField_4("집에가고싶당");
	}

}

 

9) Scrollbar

- 정해진 범위 내에서 값 조절이 가능한 컴포넌트

- 생성자: Scrollbar(int orientation, int value, int visible, int min, int max) // 스크롤바 종류, 초기값, 스크롤버튼 크기, 최소값, 최대값

 

package ja_0802;

import java.awt.Frame;
import java.awt.Label;
import java.awt.Scrollbar;

public class ScrollBar_1 extends Frame{
	
	public ScrollBar_1(String title) {
		super(title);
		
		Scrollbar srb1 = new Scrollbar(Scrollbar.VERTICAL, 10, 100, 0, 255);
		Scrollbar srb2 = new Scrollbar(Scrollbar.VERTICAL, 100, 50, 0, 255);
		
		add("West", srb1);
		add("Cneter", new Label("스크롤바 테스트~~~"));
		add("South", srb2);
		
		setSize(200, 200);
		setVisible(true);
	}
	
	public static void main(String[] args) {
		new ScrollBar_1("ScrollBar Test~~~~");
	}
}

 

10) Canvas

- 그림을 그리거나 이미지를 위한 공간으로 사용되는 컴포넌트

- 생성자: Canvas(GraphicsConfiguration config) // 대상 객체 지정(미선택 가능)

- 캔버스참조변수.setBackground(Color.색) // 캔버스 배경색 변경

- 캔버스참조변수.setBounds(int, int, int, int) // 가로위치, 세로위치, 가로크기, 세로크기

 

package ja_0803;

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

public class Canvas_1 {
	public static void main(String[] args) {
		
		Frame ff = new Frame("CanvasTest~~~");
		
		ff.setSize(300, 300);
		ff.setLayout(null);
		
		Canvas cc11 = new Canvas();
		
		cc11.setBackground(Color.pink);
		cc11.setBounds(100, 100, 150, 100);
		
		Canvas cc22 = new Canvas();
		
		cc22.setBackground(Color.blue);
		cc22.setBounds(100, 210, 150, 100);
		
		ff.add(cc11);
		ff.add(cc22);
		
		ff.setVisible(true);
		
	}

}

 

11) Panel

- 빈 평면 공간만 가진 종속적 컨테이너

- Panel 안에 Panel을 삽입 가능(컴포넌트의 다양한 배치에 유용)

- 생성자: Panel(LayoutManager layout) // 레이아웃(미선택 가능)

- setSize, setLocation, setBackground 사용

 

package ja_0803;

import java.awt.Button;
import java.awt.Color;
import java.awt.Frame;
import java.awt.Panel;

public class Panel_3 extends Frame{
	
	Panel n, w, e, c, s;
	
	public Panel_3(String title) {
		super(title);
		
		n = new Panel();
		w = new Panel();
		e = new Panel();
		s = new Panel();
		c = new Panel();
		
		n.setBackground(new Color(255, 0, 0));
		w.setBackground(new Color(0, 255, 0));
		e.setBackground(new Color(0, 0, 255));
		s.setBackground(new Color(115, 155, 0));
		c.setBackground(new Color(152, 66, 24));
		
		n.add(new Button("패널 1"));
		w.add(new Button("패널 2"));
		e.add(new Button("패널 3"));
		s.add(new Button("패널 4"));
		c.add(new Button("패널 5"));
		
		add("North", n);
		add("West", w);
		add("East", e);
		add("Center", c);
		add("South", s);
		
		setSize(500, 500);
		setVisible(true);
	}
	
	public static void main(String[] args) {
		
		Panel_3 p_3 = new Panel_3("Panel Test~~~");
	}

}

 

12) ScrollPane

- 화면이 작아지면 나타나는 스크롤 바(제한된 공간에서 큰 컴포넌트를 보여줄 때 사용)

- 단 하나의 컴포넌트만 포함 가능한 종속적 컨테이너

- 생성자: ScrollPane(int scrollbarDisplayPolicy) // 스크롤바 표시 여부(미선택 가능)

 

 

package ja_0803;

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Color;
import java.awt.Frame;
import java.awt.Panel;
import java.awt.ScrollPane;
import java.awt.TextArea;

public class ScrollPane_1 extends Frame{
	
	public ScrollPane_1(String title) {
		super(title);
		
		ScrollPane srp = new ScrollPane();
		
		srp.setSize(220, 200);
		
		// ScrollPane(스코롤펜);
//		: 스크롤펜은 하나의 자식 컴포넌트만을 가질 수 있습니다.
//		따라서 스크롤팬에 여러개의 컴포넌트를 포함시키기 위해서는 패널을 스크롤팬에 붙히고, 패널 위에 컴포넌트를 붙이는 것이 좋습니다.
		
		Panel panel = new Panel();
		panel.setLayout(new BorderLayout());
		
		TextArea txt = new TextArea("텍스트에어리어");
		txt.setBackground(Color.green);
		txt.setForeground(Color.red);
		
		Panel panel2 = new Panel();
		panel2.setLayout(new BorderLayout());
		
		TextArea txt2 = new TextArea("텍스트에어리어222");
		txt2.setBackground(Color.blue);
		txt2.setForeground(Color.cyan);
		
		panel.add("North", new Button("버튼"));
		panel.add("Center", txt);
		panel.add("South", new Button("확인"));
		
		panel2.add("North", new Button("버튼"));
		panel2.add("Center", new TextArea("삼번째방법")).setBackground(Color.gray);;
		panel2.add("South", new Button("확인"));
		
//		srp.add(panel2);
		srp.add(panel);
		
		add("Center", srp);
		
		setSize(200, 200);
		setVisible(true);	
	}
	
	public static void main(String[] args) {
		new ScrollPane_1("scrollpane");
	}
}

13) Dialog

- Frame과 같은 독립적 컨테이너, 닫기버튼을 가지고 있음(알림창, 입력 받을 때 사용)

- 생성자: Dialog(Frame parent, String title, Boolean modal) // 부모 프레임 지정, 타이틀 명, 필수 응답 여부 지정

- setSize, setLocation, setBackground, setLayout 사용

 

14) FileDialog

- 파일을 열거나 저장할때 사용하는 Dialog

- 생성자: FileDialog(Frame parent, String title, int mode) // 부모 프레임 지정, 타이틀명, Save or Load 지정

- setFile, setDirectory, getFile, getDirectory 사용

 

15) Font

- Component 클래스의 setFont(Font f)를 사용해서 폰트 변경

- 생성자: Font(String name, int style, int size) // 폰트명, 폰트 스타일(볼드 이탤릭 등), 크기

ex) Font f = new Font("Serif", Font.BOLD, 20)

컴포넌트참조변수명.setFont(f) <- f에 저장된 폰트 적용 가능

 

 

package ja_0803;

import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Label;

public class Font_1 {
	public static void main(String[] args) {
		
		Frame ff = new Frame("Font Test");
		String abc = "ABCDEFGHIJKLNMOPQRSTUVWXYZ";
		
		Label abc1 = new Label(abc);
		Label abc2 = new Label(abc);
		Label abc3 = new Label(abc);
		Label abc4 = new Label(abc);
		Label abc5 = new Label(abc);
		Label abc6 = new Label(abc);
		
		Font ff1 = new Font("Osaka", Font.PLAIN, 20);
		Font ff2 = new Font("Osaka", Font.ITALIC, 20);
		Font ff3 = new Font("Osaka", Font.BOLD, 20);
		Font ff4 = new Font("Osaka", Font.BOLD + Font.ITALIC, 20);
		Font ff5 = new Font("Osaka", Font.BOLD | Font.ITALIC, 35);
		
		abc1.setFont(ff1);
		abc2.setFont(ff2);
		abc3.setFont(ff3);
		abc4.setFont(ff4);
		abc5.setFont(ff5);
		
		ff.setLayout(new FlowLayout());
		
		ff.add(abc1);
		ff.add(abc2);
		ff.add(abc3);
		ff.add(abc4);
		ff.add(abc5);
		ff.add(abc6);
		
		ff.setSize(700, 350);
		ff.setVisible(true);
		
	}
}

 

16) Color

- 색 표현에 사용되는 클래스(미리 정의된 색 혹은 RGB값 사용 가능)

- 생성자: Color(int r, int r, int g, int b) // 불투명도, 0~255 사이의 rgb값, float으로도 가능

*기본적인 색은 Color.컬러명으로 사용


 

 

 

'back > Java' 카테고리의 다른 글

KH 27일차(AWT ActionEvent)  (0) 2022.08.06
KH 26일차(CardLayout, GridLayout)  (0) 2022.08.04
KH24일차(네트워크 시험)  (0) 2022.08.02
KH 23일차(AWT)  (0) 2022.08.01
KH 22일차(HashMap, TreeSet)  (0) 2022.07.30
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
링크