java 기초 공부 내용 정리(GUI Programming2)

홍준성·2022년 6월 5일
0

java 기초 공부

목록 보기
39/39

이벤트 처리

이벤트란?

프로그램을 실행하는 도중 사용자에 의해 발생하는 키보드 입력, 마우스 클릭 등의 동작

이벤트 처리란?

이벤트가 발생했을 때, 어떤 작업을 할 것인지 결정하는 것

이벤트 객체

이벤트 발생 시 이벤트에 대한 정보를 가진 객체
ex) 이벤트 종류, 이벤트 발생 위치(ex.마우스 좌표), 체크박스의 체크 상태

이벤트 리스너

이벤트 객체에 의해서 호출되어 해당 이벤트를 처리하는 객체
→이벤트 리스너 사용 시 해당 인터페이스의 추상 메서드를 구현해야한다.

이벤트종류리스너 인터페이스추상메서드발생 상황
ActionActionListenervoid actionPerformed(ActionEvent)Action이 발생 시
KeyKeyListenervoid KeyPressed(KeyEvent)키가 눌려질 때
KeyKeyListenervoid KeyReleased(KeyEvent)눌러진 키를 뗄 때
KeyKeyListenervoid KeyTyped(KeyEvent)유니코드 키 입력 시
MouseMouseListenervoid MousePressed(MouseEvent)마우스버튼이 눌릴 때
MouseMouseListenervoid MouseReleased(MouseEvent)눌린 마우스 뗄 때
MouseMouseListenervoid MouseClicked(MouseEvent)클릭 시
MouseMouseListenervoid MouseEntered(MouseEvent)마우스 포인터가 컴포넌트 위에 올라올 때
MouseMouseListenervoid MouseExisted(MouseEvent)마우스 포인터가 컴포넌트를 벗어날 때
class Listener1 implements ActionListener{

	@Override
	public void actionPerformed(ActionEvent e) {
		JButton button=(JButton)e.getSource();//이벤트 발생한 컴포넌트
		button.setText("버튼 클릭"); //버튼 문자열 재지정
	}
}

public class AddFrame2 extends JFrame{
	
	AddFrame2(){
		setTitle("JFrame");
		setSize(300,300);
		
		JButton button=new JButton("button");
		JCheckBox box = new JCheckBox("checkbox");
		JSlider slide = new JSlider();
		JTextField tf=new JTextField("text 입력",20);
		this.setLayout(new FlowLayout());
		
		this.add(button);
		this.add(box);
		this.add(slide);
		this.add(tf);
		
		setVisible(true);
		//내 프로그램 닫는 기능을 닫기 버튼으로 설정
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		//버튼 컴포넌트에 액션이벤트 리스너 달기
		button.addActionListener(new Listener1());
	}
	
	
	public static void main(String[] args) {
		new AddFrame2();
	}
}

마우스 관련 이벤트

이벤트 종류리스터 인터페이스추상메서드발생 상황
MouseMouseMotionListenervoid mouseDragged(MouseEvent e)마우스가 드래그 될 때
MouseMouseMotionListenervoid mouseMoved(MouseEvent e)마우스가 움질일 때

마우스 이벤트 발생 시 얻을 수 있는 정보

메서드메서드의 활용
int getX()현재 마우스 포인터의 X좌표
int getY()현재 마우스 포인터의 Y좌표
short getButton()현재 클릭한 버튼(왼쪽, 오른쪽)
int getClickCount()마우스를 클릭한 횟수
public class Mouse extends JFrame {
	JPanel Jp = new JPanel();
	JLabel la;
	Mouse(){
		setTitle("mouse 이벤트창");
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setContentPane(Jp);
		Jp.addMouseListener(new MouseListener1());
		Jp.addMouseMotionListener(new MouseListener1());
		la=new JLabel("마우스를 올려보세요!");
		Jp.add(la);
		setSize(300,300);
		setVisible(true);
		
	}
	
	class MouseListener1 implements MouseListener, MouseMotionListener{

		@Override
		public void mouseDragged(MouseEvent e) {
			la.setText("Mouse Dragged ("+e.getX()+","+e.getY()+")");
			
		}

		@Override
		public void mouseMoved(MouseEvent e) {
			la.setText("Mouse Moved ("+e.getX()+","+e.getY()+")");
		}

		@Override
		public void mouseClicked(MouseEvent e) {
			la.setText("마우스 클릭횟수:" +e.getClickCount());			
		}

		@Override
		public void mousePressed(MouseEvent e) {
			
			
		}

		@Override
		public void mouseReleased(MouseEvent e) {
			
			
		}

		@Override
		public void mouseEntered(MouseEvent e) {
			JPanel p = (JPanel)e.getSource();
			p.setBackground(Color.RED); //판의 배경을 레드로 설정
		}

		@Override
		public void mouseExited(MouseEvent e) {
			JPanel p = (JPanel)e.getSource();
			p.setBackground(Color.YELLOW); //판의 배경을 옐로우로 설정
		}
	}
	
	
	public static void main(String[] args) {
		new Mouse();
	}
}
  1. JMenuBar 객체 생성
  2. JMenu 생성
  3. JmenuItem 생성
  4. JMenu에 JmenuItem 추가
  5. JmenuBar에 JMenu 추가
  6. 현재 프레임의 메뉴바를 생성한 JMenuBar 객체로 지정
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;

class MenuActionListener implements ActionListener{

	@Override
	public void actionPerformed(ActionEvent e) {
		JOptionPane.showMessageDialog(null, "팝업"); //간단한 알림창
	}
}

public class MenuTest extends JFrame {
		MenuTest(){
			setTitle("Menu 만들기");
			createMenu();
			setSize(250,200);
			setVisible(true);
			
	}
		
		public void createMenu() {
			//메뉴바 생성
			JMenuBar mb = new JMenuBar();
			
			//메뉴 생성
			JMenu screenMenu = new JMenu("메뉴바1");
			
			//메뉴에 부착할 아이템 생성
			screenMenu.add(new JMenuItem("Load"));
			screenMenu.add(new JMenuItem("Hide"));
			screenMenu.add(new JMenuItem("ReShow"));
			screenMenu.addSeparator(); //구분선
			screenMenu.add(new JMenuItem("Exit"));
			
			//메뉴아이템 객체 만들어서 메뉴에 붙이기
			JMenuItem item = new JMenuItem("팝업");
			item.addActionListener(new MenuActionListener());
			
			screenMenu.add(item);
			mb.add(screenMenu);
			mb.add(new JMenu("편집"));
			mb.add(new JMenu("실행"));
			mb.add(new JMenu("도움말"));
			
			
			//메뉴바를 현재 프레임의 메뉴로 지정
			setJMenuBar(mb);
		}
	
	public static void main(String[] args) {
		new MenuTest();
	}
}
profile
준성이의 개발자 공부 velog

0개의 댓글