mojo's Blog

Adapter Class 본문

Java

Adapter Class

_mojo_ 2021. 7. 28. 00:30

자바의 JDK에서 여러 메소드를 모두 작성해야 하는 부담을 줄이기 위해 리스너 인터페이스를 미리 구현해 놓은 클래스를 제공하는데 이것이 바로 Adapter Class 라고 한다.

 

개발자들은 이벤트 리스너를 작성할 때, 리스너 인터페이스 대신 어댑터 클래스를 이용하는 것이 훨씬 편리하다.

 

Adapter Class를 사용하지 않고 구현한 code

import javax.swing.*; // JFrame
import java.awt.*; // Container
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

public class IndepClassListener extends JFrame{
	private JLabel la = new JLabel("Hello");
	public IndepClassListener() {
		setTitle("Action 이벤트 리스너 예제");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		Container c=getContentPane();
		c.setLayout(null);
		
		c.addMouseListener(new MouseListener() {

			@Override
			public void mouseClicked(MouseEvent arg0) {
				// TODO Auto-generated method stub
				
			}

			@Override
			public void mouseEntered(MouseEvent arg0) {
				// TODO Auto-generated method stub
				
			}

			@Override
			public void mouseExited(MouseEvent arg0) {
				// TODO Auto-generated method stub
				
			}

			@Override
			public void mousePressed(MouseEvent e) {
				// TODO Auto-generated method stub
				int x=e.getX();
				int y=e.getY();
				la.setLocation(x,y);
			}

			@Override
			public void mouseReleased(MouseEvent arg0) {
				// TODO Auto-generated method stub
				
			}
			
		});
		
		la.setSize(50,20);
		la.setLocation(30,30);
		c.add(la);
		
		setSize(350,150);
		setVisible(true);
	}
	
	public static void main(String [] args) {
		new IndepClassListener();
	}
}

 

Adapter 를 사용한 code (Interface에 존재하는 abstract method를 일일이 구현하지 않아서 편리함)

import javax.swing.*; // JFrame
import java.awt.*; // Container
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

public class IndepClassListener extends JFrame{
	private JLabel la = new JLabel("Hello");
	public IndepClassListener() {
		setTitle("Action 이벤트 리스너 예제");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		Container c=getContentPane();
		c.setLayout(null);
		
		c.addMouseListener(new MouseAdapter() {		
			public void mousePressed(MouseEvent e) {
				// TODO Auto-generated method stub
				int x=e.getX();
				int y=e.getY();
				la.setLocation(x,y);
			}
		});
		
		la.setSize(50,20);
		la.setLocation(30,30);
		c.add(la);
		
		setSize(350,150);
		setVisible(true);
	}
	
	public static void main(String [] args) {
		new IndepClassListener();
	}
}

 

Comments