스포츠마케터의 초보 개발자 도전기
JAVA study 20 본문
1. button
package ex1_button;
import java.awt.Button;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class Ex1_Button {
public static void main(String[] args) {
Frame f = new Frame("버튼 테스트");
// f.setTitle("버튼 테스트"); 제목을 변경하는 메서드
f.setBounds(500, 200, 400, 400);
f.setLayout(null); // 자동배치를 끈다-> 버튼들의 위치와 크기값을 지정해야한다.
Button btn1 = new Button("버튼1");
Button btn2 = new Button("버튼2");
Button btn3 = new Button("버튼3");
Button btn4 = new Button("버튼4");
btn1.setBounds(50, 30, 140, 100); // 버튼들에게 크기와 위치를 설정하는 방법// (가로, 세로 , 너비,높이)
btn2.setBounds(200, 30, 140, 100);
btn3.setBounds(50, 150, 140, 100);
btn4.setBounds(200, 150, 140, 100);
// 만들어둔 프레임에 버튼객체를 추가
f.add(btn1);
f.add(btn2);
f.add(btn3);
f.add(btn4);
// 각 버튼별 이벤트 감시자 등록
btn1.addActionListener(new ActionListener() {
// 액션 리스너 -> 액션퍼폼드 하고싶은거 입력
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("I PUSH THE BUTTON NO.1");
// TODO Auto-generated method stub
}
}); // 버튼 클릭하면 하고 싶은일
btn2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println(e.getActionCommand());
// 버튼에 부착된 텍스트를 가져온다
// TODO Auto-generated method stub
}
});
f.addWindowListener(new WindowAdapter() {// 최소화 최대화 감지
@Override
public void windowClosing(WindowEvent e) {
// System.exit(0); //열려있는 모든 프레임을 닫는 메서드
f.dispose();
} // 현재 프레임만 단독으로 종료
});
// 버튼 3,4에 대한 이벤트 감시자
ActionListener act = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) { // 3,4가 act를 공통적으로 가지고있지만 실행하면 다른 결과를 얻을 수 있다.
switch (e.getActionCommand()) {
case "버튼3":
System.out.println(e.getID());
System.out.println("버튼3번 클릭됨");
break;
case "버튼4":
System.out.println(e.getID());
System.out.println("button 4 click");
break;
}// switch
// TODO Auto-generated method stub
}
};
btn3.addActionListener(act);
btn4.addActionListener(act);
f.setVisible(true); // setVisible은 웬만하면 마지막에 있는게 좋다
}// main
}
2. check
package ex2_check;
import java.awt.Checkbox;
import java.awt.CheckboxGroup;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Label;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class Ex1_CheckBox {
static String myGender = "female"; // static으로 받아야 어디에서나 쓸 수 있다.
//
public static void main(String[] args) {
Frame f = new Frame();
f.setBounds(500, 200, 500, 250);
f.setLayout(null); // 자동배치 끄기
// 폰트 설정
Font font = new Font("", Font.BOLD, 30); // 글꼴 ,글자스타일,글짜크기
Label q1 = new Label("1.취미는 무엇입니까?"); // 텍스트를 보여주는 놈
q1.setBounds(10, 35, 350, 30);
// q1.setBackground(Color.yellow);
q1.setFont(font);
// 체크박스
Checkbox news = new Checkbox("뉴스시청");
news.setBounds(20, 70, 90, 30);
Checkbox sports = new Checkbox("운동");
sports.setBounds(110, 70, 50, 30);
Checkbox movie = new Checkbox("영화");
movie.setBounds(170, 70, 50, 30);
Checkbox music = new Checkbox("음악감상");
music.setBounds(240, 70, 90, 30);
// 체크박스에 이벤트 감시자 등록
ItemListener checkListener = new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
// System.out.println(e.getItem().toString());
switch (e.getItem().toString()) { // 아이템에 부착되어있는 글자로 판단할게
case "뉴스시청":
if (e.getStateChange() == 1) {// 1번은 체크가 되었다는 것 2번은 체크해제
System.out.println("select news");
} else {
System.out.println("unselect news");
}
break;
case "운동":
if (e.getStateChange() == 1) {
System.out.println("select sports");
} else {
System.out.println("unselect sports");
}
break;
case "영화":
if (e.getStateChange() == 1) {
System.out.println("select moive");
} else {
System.out.println("unselect moive");
}
break;
case "음악감상":
break;
}// swtich
}
};
news.addItemListener(checkListener);
sports.addItemListener(checkListener);
movie.addItemListener(checkListener);
music.addItemListener(checkListener);
Label q2 = new Label("성별은 무엇입니까?");
q2.setFont(font);
q2.setBounds(10, 110, 300, 30);
// 라디오버튼
CheckboxGroup group = new CheckboxGroup();
Checkbox female = new Checkbox("female", group, true);
female.setBounds(20, 150, 50, 30);
Checkbox male = new Checkbox("male", group, false);
male.setBounds(100, 150, 50, 30);
// 라디오버튼에 이벤트 감시자 등록
ItemListener genderListener = new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
myGender = e.getItem().toString();
System.out.println(myGender);
// System.out.println(e.getItem().toString());
// TODO Auto-generated method stub
}
};
female.addItemListener(genderListener);
male.addItemListener(genderListener);
// 만들어진 객체들을 프레임에 추가
f.add(q1);
f.add(news);
f.add(sports);
f.add(movie);
f.add(music);
f.add(q2);
f.add(male);
f.add(female);
f.setVisible(true);
f.addWindowListener(new WindowAdapter() {// 최소화 최대화 감지
@Override
public void windowClosing(WindowEvent e) {
// System.exit(0); //열려있는 모든 프레임을 닫는 메서드
f.dispose();
} // 현재 프레임만 단독으로 종료
});
}// main
}
3. choice
package ex3_choice;
import java.awt.Label;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
public class ChoiceListener implements ItemListener {
private Label label;
public ChoiceListener(Label label) {
this.label = label;
}
@Override
public void itemStateChanged(ItemEvent e) {
// TODO Auto-generated method stub
Ex2_ChoiceMain.res = (String) e.getItem();
label.setText(Ex2_ChoiceMain.res);
}
}
--
package ex3_choice;
import java.awt.Choice;
import java.awt.Font;
import java.awt.Frame;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class Ex1_Choice {
static String res = "SUN";
public static void main(String[] args) {
Frame f = new Frame();
f.setBounds(500, 250, 400, 100);
f.setLayout(null); // 자동배치 끄기
Font font = new Font("", Font.PLAIN, 20);
Choice day = new Choice();
day.setFont(font);
day.add("SUN");
day.add("MON");
day.add("TUE");
day.add("WED");
day.add("THU");
day.add("FRI");
day.add("SAT");
day.setBounds(10, 50, 150, 0);
// day에 이벤트 감지자 등록
day.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
res = day.getSelectedItem();
System.out.println(res);
// TODO Auto-generated method stub
}
});
f.add(day);
f.setVisible(true);
f.addWindowListener(new WindowAdapter() {// 최소화 최대화 감지
@Override
public void windowClosing(WindowEvent e) {
// System.exit(0); //열려있는 모든 프레임을 닫는 메서드
f.dispose();
} // 현재 프레임만 단독으로 종료
});
}
}
--
package ex3_choice;
import java.awt.Choice;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Label;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class Ex2_ChoiceMain {
static String res = "서울";
public static void main(String[] args) {
Frame f = new Frame();
f.setBounds(400, 200, 500, 250);
f.setLayout(null);
Choice region = new Choice();
region.add("서울");
region.add("대전");
region.add("인천");
region.add("광주");
region.add("대구");
region.add("제주");
region.setBounds(50, 100, 100, 0);
// 결과를 보여줄 Label
Label label = new Label();
label.setText(res);
Font labelFont = new Font("", Font.BOLD, 30);
label.setFont(labelFont);
label.setBounds(200, 100, 100, 100);
// region에 감지자 추가
region.addItemListener(new ChoiceListener(label)); // 이벤트를 요청했을때 초이스리스너 오버라이드 호출
f.add(region);
f.add(label);
f.setVisible(true);
f.addWindowListener(new WindowAdapter() {// 최소화 최대화 감지
@Override
public void windowClosing(WindowEvent e) {
// System.exit(0); //열려있는 모든 프레임을 닫는 메서드
f.dispose();
} // 현재 프레임만 단독으로 종료
});
}
}
4. work
package ex4_work;
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class FrameMain {
public static void main(String[] args) {
Frame f = new Frame();
f.setBounds(500, 200, 300, 300);
f.setVisible(true);
f.addWindowListener(new WindowAdapter() {// 최소화 최대화 감지
@Override
public void windowClosing(WindowEvent e) {
// System.exit(0); //열려있는 모든 프레임을 닫는 메서드
// f.dispose(); //현재 프레임만 단독으로 종료
new FramePopup(); // 새로운 화면을 띄우겠다 }
}
});
}// main
}
--
package ex4_work;
import java.awt.Button;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class FramePopup {
public FramePopup() {
Frame f = new Frame("do you want to exit?");
f.setLayout(null);
f.setBounds(600, 300, 250, 250);
Button btnY = new Button("Yes");
Button btnN = new Button("no");
btnY.setBounds(10, 50, 70, 50);
btnN.setBounds(100, 50, 70, 50);
btnY.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
System.exit(0);
}
});
btnN.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
f.dispose();
}
});
f.add(btnY);
f.add(btnN);
f.setVisible(true);
}
}
--
package ex4_work;
import java.awt.Button;
import java.awt.Checkbox;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Label;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class PopUp {
public static void main(String[] args) {
Frame f = new Frame("do you want to exit?");
f.setBounds(500, 200, 400, 400);
f.setLayout(null);
Frame f2 = new Frame();
f2.setBounds(500, 200, 400, 600);
f2.setLayout(null);
Label q1 = new Label("종료하시겠습니까?");
q1.setBounds(10, 35, 350, 30);
Button yes = new Button("예");
yes.setBounds(20, 150, 100, 90);
Button no = new Button("아니오");
no.setBounds(250, 150, 100, 90);
yes.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0);
// TODO Auto-generated method stub
}
});
no.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
f.dispose();
// 버튼에 부착된 텍스트를 가져온다
// TODO Auto-generated method stub
}
});
f.add(q1);
f.add(yes);
f.add(no);
f2.setVisible(true);
f2.addWindowListener(new WindowAdapter() {// 최소화 최대화 감지
@Override
public void windowClosing(WindowEvent e) {
// System.exit(0); //열려있는 모든 프레임을 닫는 메서드
// f.dispose();} //현재 프레임만 단독으로 종료
// new FramePopup();
f.setVisible(true);
}
});
}// main
}
5. memo
package ex5_memo;
import java.awt.Button;
import java.awt.Color;
import java.awt.FileDialog;
import java.awt.Frame;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.TextEvent;
import java.awt.event.TextListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import javax.swing.JOptionPane;
public class Ex1_FrameMemo {
public static void main(String[] args) {
Frame frame = new Frame();
frame.setBounds(500, 100, 250, 400);
frame.setBackground(Color.CYAN);
frame.setLayout(null); // 자동배치 끄기 - 프레임안 배치
// TODO : 최상단 컴포넌트
TextField tf = new TextField(10);
tf.setBounds(10, 35, 150, 20);
Button btn = new Button("입력");
btn.setBounds(165, 35, 75, 20);
btn.setEnabled(false);// 버튼 비활성화
///////////////
// TODO : 중앙 컴포넌트
TextArea ta = new TextArea("", 0, 0, TextArea.SCROLLBARS_VERTICAL_ONLY);
ta.setBounds(10, 60, 230, 290);
ta.setEditable(false);// 읽기전용으로 만들기
///////////////
// TODO : 최하단 컴포넌트
Button btnSave = new Button("저장");
btnSave.setBounds(10, 355, 110, 30);
Button btnClose = new Button("닫기");
btnClose.setBounds(130, 355, 110, 30);
//////////////
// 프레임에 자식 컴포넌트들 추가
frame.add(tf);
frame.add(btn);
frame.add(ta);
frame.add(btnSave);
frame.add(btnClose);
// tf에 값이 들어간 경우에만 입력버튼 활성화
tf.addTextListener(new TextListener() {
@Override
public void textValueChanged(TextEvent e) {
if (tf.getText().equals("")) {
btn.setEnabled(false);
} else {
btn.setEnabled(true);
}
}
});
// 입력버튼 클릭시 ta에 내용을 추가
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
ta.append(tf.getText() + "\n"); // append - 값이 누적되서 저장
tf.setText("");// 텍스트 필드 비우기
tf.requestFocus();// 커서를 tf로 이동
}
});
// 엔터를 치면 tf의 값이 ta로 전달되도록 처리
tf.addKeyListener(new KeyListener() { // addKeyListner 키보드의 입력시 인지하는 코드
@Override
public void keyTyped(KeyEvent e) {
if(e.getKeyChar() == KeyEvent.VK_ENTER) {
ta.append(tf.getText() + "\n"); // append - 값이 누적되서 저장
tf.setText("");// 텍스트 필드 비우기
tf.requestFocus();// 커서를 tf로 이동
}
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
}
});
//닫기버튼
btnClose.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//frame.dispose();
System.exit(0);
}
});
//저장버튼
btnSave.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String message = ta.getText();
FileWriter fw = null;
BufferedWriter bw = null;
try {
FileDialog fd = new FileDialog(frame, "저장", FileDialog.SAVE);
fd.setVisible(true);
String path = fd.getDirectory() + fd.getFile();
//System.out.println(path);
if(!message.equals("")) {
fw = new FileWriter(path);
bw = new BufferedWriter(fw);
bw.write(message);
bw.flush();
}else {
JOptionPane.showMessageDialog(frame, "저장할 내용이 없습니다");//(부모프레임, 내용)
}
} catch (Exception e2) {
}finally {
try {
bw.close();
fw.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
});
frame.setVisible(true);
frame.setResizable(false); // 화면크기 변경 여부
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}// main
}
6. image
package ex6_image;
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
public class Ex_Image {
public static void main(String[] args) {
Frame f = new Frame();
f.setLayout(null);
f.setBounds(500, 200, 1280, 1280);
//그림을 프레임 바탕으로
ImageIcon img = new ImageIcon("lion.jpg");
JLabel j1 = new JLabel(img);
j1.setBounds(0, 30, 1280, 1280);
f.add(j1); //배경을 제일 마지막에 add를 해야 함
f.setVisible(true);
f.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}//main
}
'develop > JAVA' 카테고리의 다른 글
JAVA study 22 (0) | 2024.05.09 |
---|---|
JAVA study 21 (0) | 2024.05.09 |
JAVA study 19 (0) | 2024.03.25 |
JAVA study 18 (0) | 2024.03.21 |
JAVA study 17 (0) | 2024.03.20 |