728x90
반응형

<오늘의 학습>

1. 창 종료

2. 이미지 출력

3. 대화창 만들기

4. 예외 처리

 

 

1. AWT를 이용한 창 종료

▶ window 창을 종료(프로그램 종료)하는 방법

  1. 해당 클래스나 인터페이스를 상속 받는다.
  2. 이벤트 등록을 한다.
  3. 그에 해당하는 메소드를 오버라이딩 한다.

 

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 파일 저장

C:\imgs\image.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

 

▶ 출력 결과

출력 결과.

 

 

▶ 대화창에 텍스트를 입력해 보자

- 대화창처럼 보이기 위해 ㅎㅇ/ㅎㅇ를 먼저 주고받아 보았다.

tf1에 텍스트를 입력해 보자. (뭐해?)

 

tf1에서 입력한 텍스트가 ta에 출력되고 tf2로 커서가 이동된다. 이번에는 tf2에 텍스트를 입력해 보자. (수업들어)

 

tf2에서 입력한 텍스트가 ta에 출력되고 tf1로 커서가 이동된다.

 

 

 

 

다음 학습

 

[JAVA] 예외 처리 (9일차)

1. 창 종료 2. 이미지 출력 3. 대화창 만들기 4. 예외 처리 4. 예외 처리 에러 : 프로그램 언어의 문법적인 오류. exception(예외) : 프로그램을 실행하는동안 예기치 않은 이상 상태(예외 상황)가 발생

deliciouscode.tistory.com

728x90
반응형

+ Recent posts