티스토리 뷰

JAVA/PRIMER

[JAVA] GUI - 이벤트

yulrang 2018. 4. 19. 14:18
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

// 이벤트를 처리하는 방법 1 - 이벤트 리스터 클래스를 내부에 정의 (추천)
// 1) 클래스 내부에 ActionLister 인터페이스를 상속하는 리스너클래스를 만든다.
// 2) 리스너 클래스 안에 actionPerformed 메소드를 오버라이딩 한다.
// 3) 버튼에 addActionListener 메소드로 리스너 인스턴스를 추가한다.

class MyFrame13 extends JFrame{
	JPanel p = new JPanel();
	JButton b1 = new JButton("빨강");
	JButton b2 = new JButton("파랑");
	
	MyListener ml = new MyListener();
	
	public MyFrame13(){
		b1.addActionListener(ml);
		b2.addActionListener(ml);
		p.add(b1);
		p.add(b2);
		add(p);
		
		setBounds(800,150,300,200);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);
	}
	
	
	
	class MyListener implements ActionListener{
		@Override
		public void actionPerformed(ActionEvent e){
			if ( e.getSource() == b1 ){
				p.setBackground(Color.RED);
			}
			if ( e.getSource() == b2 ){
				p.setBackground(Color.BLUE);
			}
		}
	}
}
public class 이벤트1 {

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

}

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

// 이벤트를 처리하는 방법 2 - 이벤트 리스터 클래스를 별도로 정의
// 1) 외부에 ActionLister 인터페이스를 상속하는 리스너클래스를 만든다.
// 2) 리스너 클래스 안에 actionPerformed 메소드를 오버라이딩 한다.
// ---* actionPerfomed 안에서 JButton의 인스턴스를 받아서 제어해야 함
// 3) 버튼에 addActionListener 메소드로 리스너 인스턴스를 추가한다.


class MyListener implements ActionListener{
	@Override
	public void actionPerformed(ActionEvent e){
		JButton b = (JButton)e.getSource();
		String s = b.getText();
		int a = Integer.parseInt(s);
		a++;
		b.setText(Integer.toString(a));
	}
}

class MyFrame14 extends JFrame{
	JPanel p = new JPanel();
	JButton b1 = new JButton("0");
	
	MyListener ml = new MyListener();
	public MyFrame14(){
		b1.addActionListener(ml);
		p.add(b1);
		add(p);
		
		setBounds(800,150,300,200);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);
	}

}
public class 이벤트2 {

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

}


import java.awt.FlowLayout;

import javax.swing.JFrame;
import javax.swing.JTextField;

class MyFrame4 extends JFrame{
	JTextField tf1 = new JTextField();
	JTextField tf2 = new JTextField(20);
	JTextField tf3 = new JTextField("초기문자열",10);
	JTextField tf4 = new JTextField("초기문자열",10);
	
	public MyFrame4(){
		setLayout(new FlowLayout());
		tf4.setEditable(false);
		add(tf1);	add(tf2);	add(tf3);	add(tf4);
		
		setSize(300,200);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);
	}
}
public class 텍스트필드1 {

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

	}

}


import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JTextField;

// 이벤트를 처리하는 방법3
// : 컨테이너 클래스에서 직접 리스너 인터페이스를 구현

class MyFrame5 extends JFrame implements ActionListener{
	JTextField tf1 = new JTextField(20);
	JTextField tf2 = new JTextField(20);
	
	
	public MyFrame5(){
		setLayout(new FlowLayout());
		tf1.addActionListener(this);
		tf2.setEditable(false);
		add(tf1); add(tf2);
		
		setSize(300,200);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);
		
	}
	
	@Override
	public void actionPerformed(ActionEvent e){
		String s = tf1.getText();
		tf2.setText(s);
	}
}
public class 텍스트필드2 {

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

	}

}


import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;

// 이벤트를 처리하는 방법 4
// 리스너클래스를 익명클래스로 작성

class MyFrame10 extends JFrame{
	JButton btn1 = new JButton("크기변경");
	JButton btn2 = new JButton("작게");
	
	public MyFrame10(){
		setLayout(new FlowLayout());
		btn1.addActionListener(new ActionListener(){
			@Override
			public void actionPerformed(ActionEvent e) {
				setSize(600,800);
			}
		});
		btn2.addActionListener(new ActionListener(){
			@Override
			public void actionPerformed(ActionEvent e) {
				setSize(300,400);
			}
		});
		
		add(btn1);	add(btn2);
		setSize(300,400);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);		
	}
	
	
}
public class 이벤트4 {

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

	}

}


'JAVA > PRIMER' 카테고리의 다른 글

[JAVA] GUI - 키 이벤트  (0) 2018.04.19
[JAVA] GUI - JTextField, JTextArea  (0) 2018.04.19
[JAVA] GUI - 배치관리자  (0) 2018.04.19
[JAVA] GUI - JPanel, JLabel, JButton  (0) 2018.04.19
[JAVA] GUI - JFrame  (0) 2018.04.19
댓글