티스토리 뷰
1.버튼을 클릭 --> 2.이벤트 객체가 발생 --> 3.이벤트 처리
이벤트 리스너 작성 과정
위의 경우는 클래스로 독립시켰지만, this를 사용해서 내부에서 바로 리스너를 만들 수도 있다.
위와 아래의 button은 다른 인스턴스임 위의 button에 아래의 button을 대입, 그 속성을 바꾸면 원래의 속성이 바뀜 인스턴스는 포인터처럼 원래의 값을 가리키고 있기 떄문
사용하는 방법은 여러가지가 있다.
다른클래스로 사용하기
package lect1111;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
class MyListener implements ActionListener {
int i =0;
public void actionPerformed(ActionEvent e) {
JButton button = (JButton) e.getSource();
if(i == 0)
{
button.setText("버튼이 눌렸습니다.");
i=i+1;
}
else
{
button.setText("test1");
i=0;
}
}
}
public class Event_1 extends JFrame {
public Event_1() {
this.setTitle("Event Test");
this.setSize(400,400);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton btn1 = new JButton("test1");
btn1.addActionListener(new MyListener());
this.add(btn1);
this.setVisible(true);
}
public static void main(String[] args) {
Event_1 a = new Event_1();
}
}
내부 클래스로 사용
package lect1111;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
public class InerEvent_1 extends JFrame {
JButton btn1;
public InerEvent_1() {
this.setTitle("Event Test");
this.setSize(400,400);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
btn1 = new JButton("test1");
btn1.addActionListener(new MyListener_1());
this.add(btn1);
this.setVisible(true);
}
class MyListener_1 implements ActionListener {
public void actionPerformed(ActionEvent e) {
if(e.getSource()==btn1)
btn1.setText("event call");
}
}
public static void main(String[] args) {
InerEvent_1 a = new InerEvent_1();
}
}
함수로 사용하기
package lect1111;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
public class FucEvent_1 extends JFrame implements ActionListener {
JButton btn1;
JButton btn2;
JButton btn3;
public FucEvent_1()
{
this.setTitle("Event Test");
this.setSize(400,400);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLayout(new FlowLayout());
btn1 = new JButton("test1");
btn1.addActionListener(this);
this.add(btn1);
btn2 = new JButton("test2");
btn2.addActionListener(this);
this.add(btn2);
btn3 = new JButton("돌려놓기");
btn3.addActionListener(this);
this.add(btn3);
this.setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
if ( e.getSource()==btn1)
btn1.setText("event call");
else if (e.getSource() == btn2)
btn2.setText("event call 2");
else if (e.getSource()==btn3)
{
btn1.setText("test1");
btn2.setText("test2");
}
}
public static void main(String[] args) {
FucEvent_1 a = new FucEvent_1();
}
}
무명클래스로 사용하기
package lect1111;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class Event_2 extends JFrame {
JButton btn1;
JButton btn2;
JButton btn3;
JLabel result;
public Event_2()
{
this.setTitle("Event Test");
this.setSize(400,400);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLayout(new FlowLayout());
btn1 = new JButton("test1");
btn1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(e.getSource() == btn1)
{
result.setText("event call1");
}
}
});
this.add(btn1);
this.setVisible(true);
}
}
이런식으로 버튼에 이벤트를 설정해 줄 수 있다.
'Study > JAVA' 카테고리의 다른 글
객체지향 프로그래밍 (JAVA) 중간, 기말점수 및 등수 (0) | 2020.04.28 |
---|---|
(java) String 문자열에 포함되어 있는지 확인하기, 문자열에 있는지 비교하기(contains) (0) | 2020.02.24 |
JAVA로 계산기 프레임만들기 (0) | 2019.11.11 |
객체지향 프로그래밍(JAVA) 9주차 (0) | 2019.11.04 |
객체지향 프로그래밍(JAVA) 8주차 (0) | 2019.11.04 |
댓글