KH/JAVA

# 40 AWT(2) - TextField , Menu

오늘의 진 2022. 8. 3. 12:33

TextField

 

TextField는 한줄로 되어있는 입력컴포넌트이고

TextArea는 여러줄에 걸쳐 입력을 받을 수 있는 문자열 입력 컴포넌트이이다.

 

 

 

TextField txt1 = new TextFoeld( "ID" , 20 ); txt1에 ID라는 글자가 써진상태로 나오고 20개의글을쓸공간이 생김
txt1.setEchoChar( ' * ' ) ; txt1에 쓰는 글은 모두 * 로 보임
txt1. setFont ("폰트이름",기울임등 설정, 크기) 폰트 설정
TextArea txt2 = new TextArea("내용".10,30 ) ; 10행 30열의 글자를 담을 수 있는 공간 생성 / 내용은 생략가능
txt2.setText("문자열 입력") TextArea에 넣고싶은 글 입력 

 

package ja_0803;

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

public class TextField_1 extends Frame {

	public TextField_1(String title) {
		super(title);
		setLayout(new FlowLayout());

		Label lbl1 = new Label("아이디 입력 : ");
		Label lbl2 = new Label("비밀번호 입력 : ");

		TextField txt1 = new TextField("ID", 20);
		TextField txt2 = new TextField("korea", 20);

//		korea는 txt2 컴포넌트 위에 찍힐 초기문자열, 20은 20개의문자를 입력 가능한 크기지정

		txt2.setEchoChar('*'); // 보여주는 글자를 *로 바꾸겠다는 의미

		add(lbl1);
		add(txt1);
		add(lbl2);
		add(txt2);

		setSize(200, 200);
		setVisible(true);
	}

	public static void main(String[] args) {
		new TextField_1("Text Test~");
	}

}

 

 

 

 

 

 

 

 

 

 

 - TextArea

package ja_0803;

import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Frame;
import java.awt.TextArea;
import java.awt.TextField;

public class TextField_2 extends Frame {

	public TextField_2(String title) {
		super(title);
		setLayout(new FlowLayout());
		// 레이아웃을 주지 않으면 보더레이아웃으로 마지막으로 add해준 txt2만 보이게됨

		TextArea txt1 = new TextArea(10, 30);// 10행 30열의 글자를 담을수 있는 공간 생성
		TextField txt2 = new TextField("안녕하세요", 20);

		txt1.setText("문자열 입력~~");
		txt1.setBackground(new Color(250, 230, 100));
		txt1.setForeground(new Color(90, 15, 156));
		txt1.setFont(new Font("궁서체", Font.ITALIC | Font.BOLD, 17));

		txt2.setEchoChar('#');
		txt2.setForeground(new Color(11, 63, 200));

		add(txt1);
		add(txt2);

		setSize(300, 330);
		setVisible(true);

	}

	public static void main(String[] args) {
		new TextField_2("Test");
	}

}

 

 

 

 

 

 

 

 

 

 

 

 

package ja_0803;

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

public class TextField_3 {
	public static void main(String[] args) {

		Frame ff = new Frame("Login");

		ff.setSize(400, 80);
		ff.setLayout(new FlowLayout());

		Label lid = new Label("ID : ", Label.RIGHT);// 우측 정렬(값을안주면 기본은 좌측정렬)
		Label lpwd = new Label("Password : ", Label.RIGHT);

		TextField id = new TextField(10);
		TextField pwd = new TextField(10);

		pwd.setEchoChar('*');

		lid.setBackground(new Color(116, 150, 245)); // 파랑
		id.setBackground(new Color(246, 134, 246));// 분홍

		ff.add(lid);
		ff.add(id);
		ff.add(lpwd);
		ff.add(pwd);

		ff.setVisible(true);

	}

}

 

 

 

 

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("간단한 메모를 입력");
		// 사이즈를 적지 않으면 폭(열)은 프레임 전체(처음지정해준크기)를 차지, 행은 10행 정도가 생성됨
		TextArea txt2 = new TextArea(10, 20);// (행,열)
		TextArea txt3 = new TextArea("문자열,문자열,,,", 5, 30);

		add(txt1);
		add(txt2);
		add(txt3);

		setSize(500, 300);
		setVisible(true);

	}

	public static void main(String[] args) {
		new TextField_4("테스트");
	}

}

 

기본출력형태 몇행 몇열을 사용하는지 확인해봄

 

 

 

ScrollPane

 

스크롤펜은 하나의 자식 컴포넌트만을 가질수 있다. 따라서 스크롤팬에 여러개의 컴포넌트를 포함시키기 위해서는 패널을 스크롤팬에 붙이고 패널위에 컴포넌트를 붙이는 것이 좋다. 

 

 

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);
		
		Panel panel1 = new Panel();
		panel1.setLayout(new BorderLayout());
		
		TextArea txt = new TextArea("텍스트에리어111");
		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);
		
		panel1.add("North",new Button("버튼"));
		panel1.add("Center",txt);
		panel1.add("South",new Button("확인"));
		
		panel2.add("North",new Button("버튼"));
		panel2.add("Center",new TextArea("공간~")).setBackground(Color.pink);
		panel2.add("South",new Button("확인"));
		
		srp.add(panel1);
		//srp.add(panel2);
		//스크롤팬 위에는 하나만 add할 수 있다. 두개를 add하면 마지막에 add한에 적용되어 나온다. 
		
		add("Center",srp);
		add(new Button("생성"));
		
		setSize(200,200);
		setVisible(true);
		
		
		
		
	}
	
	public static void main(String[] args) {
		new ScrollPane_1("Test");
	}
	

}
실행시 스크롤바가 생성됨  생성이라는 버튼을 만들어 주었을때 (스크롤팬에만 스크롤바가 생성된 모습을 볼 수 있다. )

 

 

package ja_0803;

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_2 {
	public static void main(String[] args) {

		Frame ff = new Frame("ScrollPane");

		ff.setSize(300, 200);

		ScrollPane spp = new ScrollPane();
		Panel pp = new Panel();

		pp.setBackground(new Color(255, 250, 50));
		pp.add(new Button("첫번째"));
		pp.add(new Button("두번째"));
		pp.add(new Button("세번째"));
		pp.add(new Button("네번째"));
		pp.add(new TextArea(15, 30)).setBackground(new Color(0, 255, 255));

		spp.add(pp);
		ff.add(spp);

		ff.setVisible(true);

	}

}

크기보다 작다면 스크롤바가 자동으로 생긴다.

스크롤팬에는 하나만 붙일수 있다. 

만약 여러개를 붙이면 마지막에 붙인 것만 나타난다. 

그러므로패널에 여러개를 붙여서 그다음에 

그 패널 하나를 스크롤펜에 붙이는 방식으로 해야함.

 

 

 

 

 

 

 

 

Font

 

package ja_0803;

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

public class Font_1 extends Frame {
	public static void main(String[] args) {

		Frame ff = new Frame("Font Test");

		String abc = "ABCDEFGHIJKLMNOPQRSTUV";

		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);

//	
//	Font ff1 = new Font("Serif",Font.PLAIN,20);
//	Font ff2 = new Font("Serif",Font.ITALIC,20);
//	Font ff3 = new Font("Serif",Font.BOLD,20);
//	Font ff4 = new Font("Serif",Font.BOLD+Font.ITALIC,20);
//	Font ff5 = new Font("Serif",Font.BOLD|Font.ITALIC,35);
//	
//	

		Font ff1 = new Font("Papyrus", Font.PLAIN, 20);
		Font ff2 = new Font("Papyrus", Font.ITALIC, 20);
		Font ff3 = new Font("Papyrus", Font.BOLD, 20);
		Font ff4 = new Font("Papyrus", Font.BOLD + Font.ITALIC, 20);// + : 효과를 동시에 여러개
		// ITALIC : 기울임 , BOLD :진하게
		Font ff5 = new Font("Papyrus", 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.setSize(700, 350);
		ff.setVisible(true);

	}

}

 

 

 

 

 

 

 

 

 

 

 

 

 

package ja_0803;

import java.awt.Font;
import java.awt.GraphicsEnvironment;

public class Font_2 {
	public static void main(String[] args) {

		GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();

		Font[] fonts = ge.getAllFonts();

		for (int i = 0; i < fonts.length; i++) {
			System.out.println(fonts[i].getFontName());
			// 디바이스가 가진 모든 폰트이름 출력
		}

	}
}

 

 

Canvas

:글씨를 쓰거나 그림을 그릴때 사용

 

(생성하는 방법)

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("Canvas Test~");

		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);

	}

}

 

 

 

 

 

 

 

 

 

 

 

Menu

package ja_0803;

import java.awt.Frame;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;

public class Menu_1 extends Frame {

	public Menu_1(String title) {
		super(title);

		MenuBar mb = new MenuBar();
		Menu file = new Menu("파일");

		MenuItem file_new = new MenuItem("새화일");
		MenuItem file_open = new MenuItem("불러오기");
		MenuItem file_close = new MenuItem("파일닫기");

		file.add(file_new);
		file.add(file_open);
		file.add(file_close);

		Menu edit = new Menu("편집");

		MenuItem edit_cut = new MenuItem("오려두기");
		MenuItem edit_paste = new MenuItem("붙이기");

		edit.add(edit_cut);
		edit.add(edit_paste);

		mb.add(file);
		mb.add(edit);

		Menu search = new Menu("검색");

		MenuItem search_look = new MenuItem("찾기");
		MenuItem search_ch = new MenuItem("바꾸기");

		search.add(search_look);
		search.add(search_ch);

		mb.add(search);

		setMenuBar(mb); // 프레임에 붙음
		setSize(300, 300);
		setVisible(true);

	}

	public static void main(String[] args) {

		new Menu_1("메뉴 만들기");

	}

}

 

 

 

 

 

 

 

 

 

 

 

 

 

(예) - 메뉴안에 메뉴넣기 

package ja_0803;

import java.awt.CheckboxMenuItem;
import java.awt.Frame;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;

public class Menu_2 extends Frame {

	public Menu_2(String title) {
		super(title);

		MenuBar mb = new MenuBar();
		Menu file = new Menu("파일");

		CheckboxMenuItem file_new = new CheckboxMenuItem("새화일", true);// 체크가 되어나옴
		CheckboxMenuItem file_open = new CheckboxMenuItem("불러오기");
		MenuItem file_separator = new MenuItem("-"); // 언더바 _ 만 특수하게 사용가능
		MenuItem file_close = new MenuItem("파일닫기");

		file.add(file_new);
		file.add(file_open);
		file.add(file_separator);
		file.add(file_close);

		Menu edit = new Menu("편집");
		MenuItem edit_cut = new MenuItem("오려두기");
		MenuItem edit_paste = new MenuItem("붙이기");

		edit.add(edit_cut);
		edit.add(edit_paste);

		file.add(edit);
		mb.add(file);
		setMenuBar(mb);
		setSize(300, 300);
		setVisible(true);

	}

	public static void main(String[] args) {
		new Menu_2("메뉴만들기");
	}

}

 

 

 

 

 

 

 

 

 

 

 

 

팝업메뉴

package ja_0803;

import java.awt.Frame;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.TextArea;
import java.awt.event.MouseListener;

import org.w3c.dom.events.EventTarget;
import org.w3c.dom.events.MouseEvent;
import org.w3c.dom.views.AbstractView;

public class PopupMenu_1 extends Frame implements MouseListener {

	PopupMenu popup;
	TextArea txt;

	public PopupMenu_1(String title) {
		super(title);

		popup = new PopupMenu();
		txt = new TextArea("Korea");

		MenuItem cut = new MenuItem("오려두기");
		MenuItem paste = new MenuItem("붙이기");
		MenuItem copy = new MenuItem("복사하기");

		// 팝업메뉴에 메뉴아이템 add
		popup.add(cut);
		popup.add(paste);
		popup.add(copy);

		txt.addMouseListener(this);
		txt.add(popup);

		add(txt);
		setSize(300, 300);
		setVisible(true);

	}

	public static void main(String[] args) {
		new PopupMenu_1("popup menu test");
	}

	@Override
	public void mouseClicked(java.awt.event.MouseEvent e) {

	}

	@Override
	public void mousePressed(java.awt.event.MouseEvent e) {
		// 누르기
		popup.show(txt, e.getX(), e.getY());
		// txt의 x,y좌표에서 popup을보여달라
		System.out.println(" " + txt + " : " + e.getX() + ',' + e.getY());
		// 프레임안에서 좌표값 확인하기

	}

	@Override
	public void mouseReleased(java.awt.event.MouseEvent e) {
		// 놓기

	}

	@Override
	public void mouseEntered(java.awt.event.MouseEvent e) {
		// 마우스가 화면안에 들어올때

	}

	@Override
	public void mouseExited(java.awt.event.MouseEvent e) {
		// 마우스가 화면안에서 나갈때

	}

}

 

 

 

'KH > JAVA' 카테고리의 다른 글

# 42 Dialog  (0) 2022.08.04
# 41 Layout  (0) 2022.08.03
# 39 AWT- Pane1,Button,CheckBox,Label,Frame,Choice  (0) 2022.08.01
#38 Search , Map  (0) 2022.07.29
# 37 Set - HashSet, TreeSet  (0) 2022.07.28