728x90
반응형
<오늘의 학습>
1. 창 종료
2. 이미지 출력
3. 대화창 만들기
4. 예외 처리
1. AWT를 이용한 창 종료
▶ window 창을 종료(프로그램 종료)하는 방법
- 해당 클래스나 인터페이스를 상속 받는다.
- 이벤트 등록을 한다.
- 그에 해당하는 메소드를 오버라이딩 한다.
1) 인터페이스 WindowListener 를 사용하여 창을 종료해 보자.
package java_practice;
import java.awt.*; //window 예제를 위해 창을 만드는 Frame을 사용한다.
import java.awt.event.*; //이벤트를 처리하는 인터페이스와 클래스
public class Test01_window extends Frame implements WindowListener{
//생성자
public Test01_window() {
super("인터페이스를 이용하여 창 종료");//첫 줄에 기재하여 상위 클래스 생성자 호출
setBackground(Color.pink);//super(또는 this).setBackground();와 같은 실행을 한다.
addWindowListener(this);
setSize(700,500);//가로:700, 세로:500
setVisible(true);
}//Test01_window_end
//인터페이스의 추상 메소드 오버라이딩.
//추상 메소드를 오버라이딩하지 않으면 오류가 난다. 인터페이스의 메소드는 모두가 추상이기 때문에 반드시 모두 오버라이딩 해야 한다.
public void windowClosing(WindowEvent e) {
//dispose();//리소스 반환
System.exit(0);//프로그램 종료. X를 누르면 종료됨
}
public void windowOpened(WindowEvent e) {}
public void windowClosed(WindowEvent e) {}
public void windowIconified(WindowEvent e) {}
public void windowDeiconified(WindowEvent e) {}
public void windowActivated(WindowEvent e) {}
public void windowDeactivated(WindowEvent e) {}
public static void main(String[] args) {
new Test01_window();
}//main_end
}//class_end
2) inner class를 사용하여 WindowAdapter 클래스를 상속해 창을 종료해 보자.
public class Test02_window extends Frame {
//생성자
public Test02_window(){
super("inner class를 사용하여 WindowAdapter 클래스를 상속해 창 종료");
setBackground(Color.darkGray);
addWindowListener(new MyWin());
setSize(800,800);//가로:700, 세로:500
setVisible(true);
}//Test02_window_end
//창을 종료하는 inner 클래스. 클래스는 7개를 다 오버라이딩하지 않아도 된다.
class MyWin extends WindowAdapter{
public void windowClosing(WindowEvent w){
System.exit(0);//프로그램 종료
}
}//MyWin_end
public static void main(String[] args) {
new Test02_window();
}//main_end
}//class_end
3) 이름이 없는 클래스를 사용하여 창을 종료해 보자
public class Test03_anonymous extends Frame{
//생성자
public Test03_anonymous(){
super("이름 없는 클래스를 사용하여 창 종료");
setBackground(Color.orange);
setSize(400,200);
setVisible(true);
//이름 없는 클래스
addWindowListener(new WindowAdapter(){
//오버라이딩
public void windowClosing(WindowEvent w){
System.exit(0);
}
});
}//Test03_anonymous_end
public static void main(String[] args) {
new Test03_anonymous();
}//main_end
}//class_end
※ 같은 패키지에서 다른 클래스를 호출할 수 있다.
package java_practice; //같은 패키지
public class Test_window {
public static void main(String[] args) {
new Test03_anonymous();
}//main_end
}//clase_end
2. AWT를 이용한 이미지 출력
1) jpg 파일 출력
▶ jpg 파일 저장
▶ 코드 작성
public class Test04_img extends Frame{
//변수
Image img;
//생성자
public Test04_img(){
super("이미지를 출력해 보자");
img=Toolkit.getDefaultToolkit().getImage("C:\\imgs\\image.jpg");//윈도우는 \를 2개 써야 한다.
setSize(1300,600);
setVisible(true);
addWindowListener(new MyWin());
}//Test04_img_end
//메소드 paint(Graphics g)
public void paint(Graphics g){
g.drawImage(img, 50, 20, this);//x:50, y:20, this:여기에 출력한다.
}
//창을 종료하는 inner 클래스
class MyWin extends WindowAdapter{
public void windowClosing(WindowEvent w){
System.exit(0);//프로그램 종료
}
}//MyWin_end
public static void main(String[] args) {
new Test04_img();
}//main_end
}//class_end
▶ 출력
2) 이미지 크기를 줄여서 출력
//변수
Image img;
//디폴트 생성자
public Test04_img(){
super("이미지를 출력해 보자");
img=Toolkit.getDefaultToolkit().getImage("C:\\imgs\\image.jpg");//윈도우는 \를 2개 써야 한다.
setSize(800,500);
setVisible(true);
addWindowListener(new Mywin());
}//Test04_img_end
//메소드 paint(Graphics g)
public void paint(Graphics g){
//g.drawImage(img, 50, 20, this);//x:50, y:20, this:여기에 출력한다.
g.drawImage(img, 50, 50, 400, 300, this);//width:300, height:200
}//paint_end
//창을 종료하는 inner 클래스
class Mywin extends WindowAdapter{
public void windowClosing(WindowEvent w){
System.exit(0);//프로그램 종료
}
}//Mywin_end
public static void main(String[] args) {
new Test04_img();
}//main_end
3. 대화창 만들기
▶ 코드 작성
public class Test05_event extends Frame implements ActionListener{
//변수
TextField tf1,tf2;
TextArea ta;
//생성자
public Test05_event(){
super("이벤트 대화창 출력");//첫 줄에 기재하여 상위 클래스 생성자 호출
tf1=new TextField();//객체 생성
tf2=new TextField();//객체 생성
ta=new TextArea();//객체 생성
//배경 색상
tf1.setBackground(Color.red);
tf2.setBackground(Color.blue);
ta.setBackground(Color.yellow);
//글자 색상
tf1.setForeground(Color.white);
tf2.setForeground(Color.white);
//폰트 설정
tf1.setFont(new Font("Dialog", Font.BOLD, 20));//폰트 설정:BOLD(굵게), 폰트 크기:20
tf2.setFont(new Font("Dialog", Font.PLAIN, 20));//폰트 설정:PLAIN, 폰트 크기:20
ta.setFont(new Font("Dialog", Font.PLAIN, 20));//폰트 설정:PLAIN, 폰트 크기:20
//Frame 컨테이너에 컴포넌트 붙이기
add(tf1,"North");//위에 위치. North의 N은 대문자로 작성
add(tf2,"South");//밑에 위치. South의 S은 대문자로 작성
add(ta,"Center");//가운데에 위치. Center의 C은 대문자로 작성
//이벤트 등록
this.addWindowListener(new MyWin());
tf1.addActionListener(this);
tf2.addActionListener(this);
addWindowListener(new MyWin());
setSize(500,500);
setVisible(true);
}//Test05_event(cons_end)
//inner class
class MyWin extends WindowAdapter{
//오버라이딩
public void windowClosing(WindowEvent w){
System.exit(0);//프로그램
}
}//Mywin_end
//메소드 오버라이딩
public void actionPerformed(ActionEvent e){
if(e.getSource()==tf1){
String msg="홍길동>>"+tf1.getText();//지역 변수 메세지. 받아온 text를 입력
ta.append(msg+"\n");
tf1.setText("");//tf1 내용 지움
tf2.requestFocus();//tf2으로 포커스 이동
}
else if(e.getSource()==tf2){
String msg="저팔계>>"+tf2.getText();//지역 변수 메세지. 받아온 text를 입력
ta.append(msg+"\n");
tf2.setText("");//tf2 내용을 지움
tf1.requestFocus();//tf1으로 포커스 이동
}
}
public static void main(String[] args) {
new Test05_event();
}//main_end
}//class_end
▶ 출력 결과
▶ 대화창에 텍스트를 입력해 보자
- 대화창처럼 보이기 위해 ㅎㅇ/ㅎㅇ를 먼저 주고받아 보았다.
다음 학습
[JAVA] 예외 처리 (9일차)
1. 창 종료 2. 이미지 출력 3. 대화창 만들기 4. 예외 처리 4. 예외 처리 에러 : 프로그램 언어의 문법적인 오류. exception(예외) : 프로그램을 실행하는동안 예기치 않은 이상 상태(예외 상황)가 발생
deliciouscode.tistory.com
728x90
반응형
'HRD_훈련 > JAVA' 카테고리의 다른 글
[JAVA] 반복문과 배열, 랜덤 함수 실습 (10일차) (0) | 2023.05.25 |
---|---|
[JAVA] 예외 처리 (9일차) (0) | 2023.05.24 |
[JAVA] 추상 클래스와 인터페이스 (8일차) (0) | 2023.05.23 |
[JAVA] 생성자와 상속 (7일차) (0) | 2023.05.22 |
[JAVA] 객체 지향 프로그래밍 (6일차) (0) | 2023.05.19 |