화면 구조를 만들때 주로 사용한다.
자바에서는 awt와 swing을 제공한다.
awt는 os의 환경에 따라 조금씩 변화한다.
swing 자바그래픽을 사용해서 똑같은 결과가 나온다
그러나 잘 안쓰인다 둘 다....
그러나 중요한 것은 이런 ui를 눌렀을때 일어나는 이벤트를 처리하는 방법을 익히자!
컨테이너와 컨퍼넌트
일종의 하나의 부품을 컨퍼넌트라고 할 수 있다.
컴퓨터 : 컨테이너
모니터, 램, cpu등등 : 컨퍼넌트라고 볼수 있다.
창이 컨테이너가 될수 있고, 그 안에 들어가는 버튼 채크박스 텍스트뷰가 컨퍼넌트가 될수 있다.
jsp는 컨테이너 랭귀지, java와 html은 컨퍼넌트 랭귀지
window는 매뉴와 타이틀이 제공하지 않음(올라가지 않음), 따라서 쓰이지 않는다.
window를 상속받는 Frame에서 제공한다.
import java.awt.*;
class FrameTest {
public static void main(String args[]) {
Frame f = new Frame("Login");// Frame객체를 생성한다. 타이틀도 삽입
Button b1 = new Button("버튼");
f.setSize(300, 200); // Frame의 크기를 설정한다.
f.add(b1); // 화면에 버튼 생성
f.setVisible(true); // 생성한 Frame을 화면에 보이도록 한다.
}
}
BorderLayout
특정 방향을 알리지 않았으면 센터가 디폴트
그리고 방향마다 하나만 올릴수 있다.
import java.awt.*;
class BorderLayoutTest {
public static void main(String args[]) {
Frame f = new Frame("BorderLayoutTest");
f.setSize(200, 200);
f.setLayout(new FlowLayout());//상단으로 가운데 정렬
Button north = new Button("North");
Button south = new Button("South");
Button east = new Button("East");
Button west = new Button("West");
Button center = new Button("Center");
f.add(north, "North"); // f.add("North",north);와 같이 쓸 수도 있다.
f.add(south, "South"); // South의 대소문자 정확히
f.add(east, BorderLayout.EAST); // East대신, BorderLayout.EAST 사용가능
f.add(west, "West");
f.add(center, "Center");
f.setVisible(true);
}
}
GirdLayout
바둑판식
레이아웃
import java.awt.*;
class GridLayoutTest {
public static void main(String args[]) {
Frame f = new Frame("GridLayoutTest");
f.setSize(150, 150);
f.setLayout(new GridLayout(3, 2)); // 3행 2열의 테이블을 만든다.
f.add(new Button("1")); // 추가되는 순서대로 Button에 번호를 붙였다.
f.add(new Button("2"));
f.add(new Button("3"));
//f.add(new Button("4"));
f.add(new Button("5"));
f.add(new Button("6"));
f.setVisible(true);
}
}
Checkbox
import java.awt.*;
class CheckboxTest {
public static void main(String args[]) {
Frame f = new Frame("Questions");
f.setSize(305, 250);
// Frame의 LayoutManager를 FlowLayout으로 설정한다.
f.setLayout(new FlowLayout());
Label q1 = new Label("1. 당신의 관심 분야는?(여러개 선택가능)");
Checkbox news = new Checkbox("news", true); // 선택된 상태로 생성
Checkbox sports = new Checkbox("sports");
Checkbox movies = new Checkbox("movies");
Checkbox music = new Checkbox("music");
f.add(q1); f.add(news); f.add(sports); f.add(movies); f.add(music);
Label q2 = new Label("2. 얼마나 자주 극장에 가십니까?");
CheckboxGroup group1 = new CheckboxGroup();
//그룹으로 묵으면 라디오 버튼으로 바뀜
Checkbox movie1 = new Checkbox("한 달에 한 번 갑니다.", group1, true);
Checkbox movie2 = new Checkbox("일주일에 한 번 갑니다.", group1, false);
Checkbox movie3 = new Checkbox("일주일에 두 번 갑니다.", group1, false);
f.add(q2); f.add(movie1); f.add(movie2); f.add(movie3);
Label q3 = new Label("3. 하루에 얼마나 컴퓨터를 사용하십니까?");
CheckboxGroup group2 = new CheckboxGroup();
Checkbox com1 = new Checkbox("5시간 이하 ", group2, true);
Checkbox com2 = new Checkbox("10시간 이하", group2, false);
Checkbox com3 = new Checkbox("15시간 이상", group2, false);
f.add(q3); f.add(com1); f.add(com2); f.add(com3);
f.setVisible(true);
}
}
Choice
import java.awt.*;
class ChoiceTest {
public static void main(String args[]) {
Frame f = new Frame("Choice - Select");
f.setSize(300, 200);
f.setLayout(null);
Choice day = new Choice(); // Choice객체를 생성한 다음
day.add("SUN"); // Choice의 목록에 나타날 값들을 추가한다.
day.add("MON");
day.add("TUE");
day.add("WED");
day.add("THU");
day.add("FRI");
day.add("SAT");
day.setSize(100, 50);
day.setLocation(100, 70);
f.add(day);
f.setVisible(true);
}
}
Color
import java.awt.*;
class ColorTest {
public static void main(String args[]) {
Frame f = new Frame("Color Test");
f.setLayout(new GridLayout(14, 2));
Panel p1 = new Panel(); p1.setBackground(Color.black);
Panel p2 = new Panel(); p2.setBackground(Color.blue);
Panel p3 = new Panel(); p3.setBackground(Color.cyan);
Panel p4 = new Panel(); p4.setBackground(Color.darkGray);
Panel p5 = new Panel(); p5.setBackground(Color.gray);
Panel p6 = new Panel(); p6.setBackground(Color.green);
Panel p7 = new Panel(); p7.setBackground(Color.lightGray);
Panel p8 = new Panel(); p8.setBackground(Color.magenta);
Panel p9 = new Panel(); p9.setBackground(Color.orange);
Panel p10 = new Panel();p10.setBackground(Color.pink);
Panel p11 = new Panel();p11.setBackground(Color.red);
Panel p12 = new Panel();p12.setBackground(Color.white);
Panel p13 = new Panel();p13.setBackground(Color.yellow);
Panel p14 = new Panel();p14.setBackground(new Color(50,100,100));
f.add(new Label("Color.black")); f.add(p1);
f.add(new Label("Color.blue")); f.add(p2);
f.add(new Label("Color.cyan")); f.add(p3);
f.add(new Label("Color.darkGray")); f.add(p4);
f.add(new Label("Color.gray")); f.add(p5);
f.add(new Label("Color.green")); f.add(p6);
f.add(new Label("Color.lightGray")); f.add(p7);
f.add(new Label("Color.magenta")); f.add(p8);
f.add(new Label("Color.orange")); f.add(p9);
f.add(new Label("Color.pink")); f.add(p10);
f.add(new Label("Color.red")); f.add(p11);
f.add(new Label("Color.white")); f.add(p12);
f.add(new Label("Color.yellow")); f.add(p13);
f.add(new Label("Color(50, 100, 100)"));f.add(p14);
f.setSize(250, 300);
f.setVisible(true);
}
}
List
import java.awt.*;
class ListTest {
public static void main(String args[]) {
Frame f = new Frame("List - Select");
f.setSize(300, 200);
f.setLayout(null);
List selectOne = new List(6); // 6개 목록을 보여줄 수 있는 크기의 List를 만든다.
selectOne.setLocation(20,40);
selectOne.setSize(100, 120);
selectOne.add("Student");
selectOne.add("Teacher");
selectOne.add("Driver");
selectOne.add("Computer Programmer");
selectOne.add("Sales Man");
selectOne.add("Musician");
selectOne.add("Director");
// 생성자의 두번째 인자값을 true로 설정해서 List의 목록에서 여러 개를 선택할 수 있게 했다.
List selectMany = new List(6, true);
selectMany.setLocation(150, 40);
selectMany.setSize(100,120);
selectMany.add("Student");
selectMany.add("Teacher");
selectMany.add("Driver");
selectMany.add("Computer Programmer");
selectMany.add("Sales Man");
selectMany.add("Musician");
selectMany.add("Director");
f.add(selectOne);
f.add(selectMany);
f.setVisible(true);
}
}
Scrollbar
import java.awt.*;
class ScrollbarTest {
public static void main(String args[]) {
Frame f = new Frame("Scrollbar");
f.setSize(300, 200);
f.setLayout(null);
Scrollbar hor = new Scrollbar(Scrollbar.HORIZONTAL, 0, 50, 0, 100);
hor.setSize(100, 15);
hor.setLocation(60, 30);
Scrollbar ver = new Scrollbar(Scrollbar.VERTICAL, 50, 20, 0, 100);
ver.setSize(15, 100);
ver.setLocation(30, 30);
f.add(hor);
f.add(ver);
f.setVisible(true);
}
}
TextArea
class TextAreaTest {
public static void main(String args[]) {
Frame f = new Frame("Comments");
f.setSize(400, 220);
f.setLayout(new FlowLayout());
TextArea comments = new TextArea("하고 싶은 말을 적으세요.", 10, 50);
//10줄 50칸
f.add(comments);
comments.selectAll(); // TextArea의 text 전체가 선택 되도록 한다.
f.setVisible(true);
}
}
TextField
import java.awt.*;
class TextFieldTest {
public static void main(String args[]) {
Frame f = new Frame("Login");
f.setSize(400, 65);
f.setLayout(new FlowLayout()); // LayoutManager를 FlowLayout으로 한다.
Label lid = new Label("ID :", Label.RIGHT); // 정렬을 오른쪽으로.
Label lpwd = new Label("Password :", Label.RIGHT);
TextField id = new TextField(10); //약 10개의 글자를 입력할 수 있는 TextField 생성
TextField pwd = new TextField(10);
pwd.setEchoChar('*'); // 입력한 값 대신 '*'가 보이도록 한다.
f.add(lid); // 생성한 컴포넌트들을 Frame에 포함시킨다.
f.add(id);
f.add(lpwd);
f.add(pwd);
f.setVisible(true);
}
}
import java.awt.*;
import java.awt.event.*;
class TextFieldTest2 extends Frame {
Label lid;
Label lpwd;
TextField tfId;
TextField tfPwd;
Button ok;
TextFieldTest2(String title) {
super(title); // Frame(String title)을 호출한다.
lid = new Label("ID :", Label.RIGHT); // Label의 text정렬을 오른쪽으로.
lpwd = new Label("Password :", Label.RIGHT);
// 약 10개의 글자를 입력할 수 있는 TextField 생성.
tfId = new TextField(10);
tfPwd = new TextField(10);
tfPwd.setEchoChar('*'); // 입력한 값 대신 '*'이 보이게 한다.
ok = new Button("OK");
// OK버튼과 TextField에 이벤트처리를 위한 Listener를 추가해준다.
tfId.addActionListener(new EventHandler());
tfPwd.addActionListener(new EventHandler());
ok.addActionListener(new EventHandler());
setLayout(new FlowLayout()); // LayoutManager를 FlowLayout으로
add(lid); // 생성한 Component들을 Frame에 포함시킨다.
add(tfId);
add(lpwd);
add(tfPwd);
add(ok);
setSize(450, 65);
setVisible(true); // Frame이 화면에 보이게 한다.
}
public static void main(String args[]) {
TextFieldTest2 f = new TextFieldTest2("Login");
}
class EventHandler implements ActionListener {
public void actionPerformed(ActionEvent e){
String id = tfId.getText(); // tfId에 입력되어있는 text를 얻어온다.
String password = tfPwd.getText();
if (!id.equals("java")){
System.out.println("입력하신 id가 유효하지 않습니다. 다시 입력해 주세요.");
// id를 다시 입력할 수 있도록, focus를 tfId로 옮긴다.
tfId.requestFocus();
tfId.selectAll(); // tfId에 입력된 text가 선택되게 한다.
} else if (!password.equals("111")) {
System.out.println("입력하신 비밀번호가 틀렸습니다. 다시 입력해 주시기 바랍니다.");
// id를 다시 입력할 수 있도록 focus를 tfId로 옮긴다.
tfPwd.requestFocus();
tfPwd.selectAll();
} else {
System.out.println( id + "님, 성공적으로 로그인 되었습니다.");
}}} }