반응형
addActionsListener는 클릭 리스너이다.
마우스 클릭에 반응하는 리스너인 것이다.
컴포넌트마다 리스너가 다르고,
나중에는 키보드 입력,
마우스 클릭에 대한 리스너도 볼 수 있다.
checkBox1.addActionListener(new ActionListener() { // 클릭 이벤트만 가짐
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("체크박스1이 클릭되었습니다.");
}
});
리스너의 타겟은 모두 인터페이스이다.
OS가 ItemEvent e라는 변수에
체크가 되었는지 안되었는지 정보를 전달해준다.
checkBox1.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
System.out.println(e);
}
});
체크박스를 체크해준 뒤
전달받은 e를 출력해보니
많은 정보들 중 stateChange가 SELECTED 되어있는 것을 볼 수 있다.
e가 가진 stateChange 상태를 통해
예쁘게 출력해줄 수 있다.
ItemEvent 클래스
package site.metacoding.ex13;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class EventEx01 extends JFrame {
// 컴포넌트, 컨테이너들은 전역변수로 만들어줌
// 생성자는 스택, 지역변수 오래못감
JPanel myPanel;
JButton btn1, btn2; // Ctrl + Shift + O import 단축키
JCheckBox checkBox1;
public EventEx01() {
setSize(300, 300);
setLocationRelativeTo(null); // 프레임 화면 중앙 배치
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 닫기버튼 클릭시 main 종료
myPanel = new JPanel(); // heap에 띄우기
add(myPanel);
btn1 = new JButton("버튼1");
myPanel.add(btn1);
btn2 = new JButton("버튼2");
myPanel.add(btn2);
checkBox1 = new JCheckBox();
myPanel.add(checkBox1);
checkBox1.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
// System.out.println(e);
// System.out.println(e.getStateChange());
if (e.getStateChange() == 1) {
System.out.println("체크되었습니다.");
} else {
System.out.println("체크 해제 되었습니다.");
}
}
});
// 윈도우야 지켜봐줘 이 버튼을
btn1.addActionListener(new ActionListener() { // 익명 클래스
// 버튼이 클릭되면 윈도우가 해당 메서드를 콜백해준다.
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("버튼1이 클릭되었습니다.");
}
});
btn2.addActionListener((ActionEvent e) -> {
System.out.println("버튼2가 클릭되었습니다.");
});
setVisible(true);
}
public static void main(String[] args) {
new EventEx01();
}
}
[출처]
https://cafe.naver.com/metacoding
메타 코딩 유튜브
https://www.youtube.com/c/%EB%A9%94%ED%83%80%EC%BD%94%EB%94%A9
반응형