자바기초(모듈과 스윙)

bitna's study note·2022년 5월 18일
0

자바

목록 보기
87/119

5월 17~18일 내용정리

스윙을 배워보자...

1.모듈은 외부라이브러리 이다. 패키지묶음임. 또는 프로젝트단위로 봐도됨
모듈은 보안상의 이유로 보이지 않아야할 부분이 보이는것을 방지하기위해 모듈로 묶어둠예전에 모듈에 모든 기능의 모듈을 넣어놔서 간단한 작업도 오래걸리고 메모리도 많이 차지했는데, 자바8?!11?!버젼이후 부터는 기본적으로 JavaBase와 넣어놓고 효율성을 위하여 필요한 모듈만 등록 해서 쓴다.

2.필요한 패키지 등록 방법
모듈 작성 페이지에
requires 필요한 모듈 코딩
exports 공개할 패키지

3.스윙이란?
스윙은 자바에서 지원하는 GUI프로그램으로 사용자 편의를 위하여 코드위에 그래픽 프로그램을 덮입힌것...예를 들어 윈도우창도 GUI프로그램의 하나이다.
자바의 최초 AWT가 만들어지고 발전된 상태가 swing이다.

4.위에 사진처럼 프레임이 있고, 그안에 컨테이너가 있고, 패널이 있고, 컴포넌트가 있다.

5.구현 형식은
(1)JFrame을 상속 받고
(2)생성자는 객체를 만들기전에 준비시켜주는 단계로 이벤트가 시작하기전에 미리 컴포넌트를 프레임에 부착 시켜주기 위하여 생성자에 만든다.
(3)아래 부분은 꼭 필수적으로 적어줘야 되는 부분
setTitle("카운터"); //프로그램 상단에 있는 부분
setSize(250,100); //스윙창 사이즈
setVisible(true); //실행시 실행창 보이는 여부
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//실행창 종료시 스윙도 강제종료
(4)패널생성->컴포넌트를 부착
(5)패널에 컴포넌트 부착
(6)J프레임에 패널 부착
(7)이벤트 처리를 위하여 ActionListener 객체 생성
방법1~3번까지 본인이 선호 하는 방식으로 작성 하면 됨

package study_0518;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


//public class EventExam01 extends JFrame 이렇게 쓰고 하단에 직접 addActionListener를 불러서 사용하던지
//public class EventExam01 extends JFrame implements ActionListener 이렇게 인터페이스 상속받아 구현객체 만들기
public class EventExam02 extends JFrame{
	private int count=0; //증가수
	private JLabel jLabel; //개수표시 레이블
	private JButton jButton;// 증가버튼
	
	//생성자를 이용해서 컴포넌트(버튼,레이블...)를 프레임에 장착
	//생성자는 객체를 만들기전 준비시켜주는 단계라 버튼만들기나 프레임 부착은 미리 만들어줌
	public EventExam02() {
		//필수사항
		setTitle("카운터");
		setSize(250,100);
		setVisible(true);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		//패널생성->컴포넌트를 부착
		JPanel p1 = new JPanel();
		jLabel = new JLabel("개수=0");
		
		JPanel p2 = new JPanel();
		jButton= new JButton("증가");
		
		//패널에 컴포넌트 부착
		p1.add(jLabel);
		p2.add(jButton);
		
		//J프레임에 패널 부착
		add("North",p1);
		add("South",p2);
		
//버튼을 클릭하면 +1증가 ->버튼이니까 ActionEvent
		
//		방법1
//		ActionListener listner = new ActionListener() {
//
//			@Override
//			public void actionPerformed(ActionEvent e) {
//				count++;
//				jLabel.setText("개수="+count);	
//			}
//		};
//		//addActionListener 메서드를통해 ActionListener객체를 jButton에 붙여죠
//		jButton.addActionListener(listner); 

		
//		방법2 메서드가 1개라서 람다식으로 처리
//		ActionListener listner = e-> {
//				count++;
//				jLabel.setText("개수="+count);	
//		};		
//		jButton.addActionListener(listner); 
	
		
//		방법3- 매개값인 listner 대신 직접 객체 생성식을 넣어줌		
		jButton.addActionListener(e-> {
			count++;
			jLabel.setText("개수="+count);	
	}); 
			
		
	}

	public static void main(String[] args) {
		new EventExam02();

	}

}

아무래도 제일 어려운 부분은 이벤트발생시 스윙버튼과 어떻게 연결 시킬건가가 제일 고민된다.

흐름은 위에 사진과 같이
컴포넌트에 이벤트 발생(클릭,키보드 치기,드래그...등등 모든 액션들)->ActionEvent 처리->ActionListener가 듣고 있다가 이벤트를 캐치하고 ->actionPerformed 메서드를 호출하여 이벤트 처리하고 종료된다.

이때 ActionListener는 인터페이스이고, actionPerformed는 인터페이스에 들어있는 추상메서드로 클래스에서 implements로 받을시 꼭 구현해 줘야 하지만,
클래스내에 직접 ActionListener객체를 생성해서 구현해줘도 된다.

profile
좋은개발자가 되기위한 삽질기록 노트

0개의 댓글

관련 채용 정보