package gui.project.ex02;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Event01 extends JFrame {
private JButton button;
private JLabel label;
int counter = 0;
public Event01() {
setSize(600, 200);
setLayout(new FlowLayout());
button = new JButton("증가");
label = new JLabel("현재의 카운터 값" + counter);
// 클래스가 아니라 메서드를 주입해야하는데, 언어 특성상 클래스 주입
button.addActionListener(new Inner());
add(button);
add(label);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
// 클래스 안의 클래스, 이 클래스에서만 사용할 때
class Inner implements ActionListener {
//콜백 메서드
@Override
public void actionPerformed(ActionEvent e) {
JButton btn = (JButton) e.getSource();
System.out.println("버튼 클릭됨 : " + e);
System.out.println(btn.getText());
counter++;
System.out.println(counter);
label.setText("현재의 카운터 값 : " + counter);
}
}
public static void main(String[] args) {
new Event01();
}
}
Myframe.java
package gui.project.ex02;
import javax.swing.JFrame;
public class MyFrame extends JFrame {
public MyFrame() {
setSize(500, 200);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
}
package test.ex03;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
public class BubbleFrame extends JFrame {
private JLabel backgroundMap;
private Player player;
public BubbleFrame() {
initObject();
initSetting();
initListener();
setVisible(true);
}
private void initObject() {
backgroundMap = new JLabel(new ImageIcon("image/backgroundMap.png"));
player = new Player();
setContentPane(backgroundMap);
add(player);
}
private void initSetting() {
setSize(1000, 640);
setLayout(null);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
private void initListener() {
// 어댑터
addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
System.out.println(e.getKeyCode());
if (e.getKeyCode() == 39) {
player.right();
} else if (e.getKeyCode() == 37) {
player.left();
}
}
});
}
public static void main(String[] args) {
new BubbleFrame();
}
}
package test.ex03;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
public class Player extends JLabel {
private int x;
private int y;
private ImageIcon playerR, playerL;
public Player() {
initObject();
initSetting();
}
public void initObject() {
playerR = new ImageIcon("image/playerR.png");
playerL = new ImageIcon("image/playerL.png");
}
private void initSetting() {
x = 70;
y = 535;
setIcon(playerR);
setSize(50, 50);
setLocation(x, y);
}
public void right() {
setIcon(playerR);
x = x + 10;
setLocation(x, y);
}
public void left() {
setIcon(playerL);
x = x - 10;
setLocation(x, y);
}
}
Event06.java
package gui.project.ex02;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import okhttp3.Call;
// 1. 이벤트 소스
public class Event06 extends MyFrame {
// 생성자 안에 변수선언 X, 바깥에서 사용 못함
private JButton btn1, btn2;
public Event06() {
// 1. 컴포넌트 생성
btn1 = new JButton("버튼1");
btn2 = new JButton("버튼2");
// 2. 컴포넌트를 컨테이너에 배치
add(btn1, BorderLayout.NORTH);
add(btn2, BorderLayout.SOUTH);
// 3. 리스너 생성
Callback call = new Callback(); // 콜백될 타겟 메서드
btn1.addActionListener(call);
btn2.addActionListener(call);
// 4. 그림 그리기
setVisible(true);
}
class Callback implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
// 이벤트가 어떤 타입인지 모르니 Object 타입으로 받음
Object target = e.getSource();
JButton btn = (JButton) target;
System.out.println(btn.getText());
System.out.println(btn.getX());
System.out.println(btn.getY());
System.out.println(btn.getHeight());
System.out.println(btn.getWidth());
if (btn.getText().equals("버튼1")) {
//
System.out.println("버튼1이 클릭되었습니다.");
} else if (btn.getText().equals("버튼2")) {
//
System.out.println("버튼2가 클릭되었습니다.");
}
}
}
public static void main(String[] args) {
new Event06();
}
}
Event07.java
package gui.project.ex02;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
// 1. 이벤트 소스
public class Event07 extends MyFrame implements ActionListener {
// 생성자 안에 변수선언 X, 바깥에서 사용 못함
private JButton btn1, btn2;
public Event07() {
// 1. 컴포넌트 생성
btn1 = new JButton("버튼1");
btn2 = new JButton("버튼2");
// 2. 컴포넌트를 컨테이너에 배치
add(btn1, BorderLayout.NORTH);
add(btn2, BorderLayout.SOUTH);
btn1.addActionListener(this);
btn2.addActionListener(this);
// 4. 그림 그리기
setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
JButton btn2 = (JButton) e.getSource();
if (btn2.getText().equals("버튼1")) {
//
System.out.println("버튼1이 클릭되었습니다.");
} else if (btn2.getText().equals("버튼2")) {
//
System.out.println("버튼2가 클릭되었습니다.");
}
}
public static void main(String[] args) {
new Event07();
}
}
Event08.java
package gui.project.ex02;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
// 1. 이벤트 소스
public class Event08 extends MyFrame {
// 생성자 안에 변수선언 X, 바깥에서 사용 못함
private JButton btn1, btn2;
public Event08() {
btn1 = new JButton("버튼1");
btn2 = new JButton("버튼2");
add(btn1, BorderLayout.NORTH);
add(btn2, BorderLayout.SOUTH);
setVisible(true);
btn1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("버튼1이 클릭되었습니다");
}
});
btn2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("버튼2가 클릭되었습니다");
}
});
}
public static void main(String[] args) {
new Event08();
}
}
Event09.java
package gui.project.ex02;
import java.awt.BorderLayout;
import javax.swing.JButton;
// 1. 이벤트 소스
public class Event09 extends MyFrame {
// 생성자 안에 변수선언 X, 바깥에서 사용 못함
private JButton btn1, btn2;
public Event09() {
btn1 = new JButton("버튼1");
btn2 = new JButton("버튼2");
add(btn1, BorderLayout.NORTH);
add(btn2, BorderLayout.SOUTH);
// 메서드가 2개면 무명클래스
btn1.addActionListener(e -> System.out.println("버튼1이 클릭됨"));
btn2.addActionListener(e -> System.out.println("버튼2이 클릭됨"));
setVisible(true);
}
public static void main(String[] args) {
new Event09();
}
}
EventTest3.java
package gui.project.practice;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class EventTest3 extends JFrame implements ActionListener {
private JButton button;
private JLabel label;
int counter = 0;
@Override
public void actionPerformed(ActionEvent e) {
counter++;
label.setText("현재의 카운터값: " + counter);
}
public EventTest3() {
setSize(400, 150);
setTitle("이벤트 예제");
JPanel panel = new JPanel();
button = new JButton("증가");
label = new JLabel("현재의 카운터 값: " + counter);
button.addActionListener(this);
panel.add(label);
panel.add(button);
add(panel);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] args) {
EventTest3 t = new EventTest3();
}
}
EventTest4.java
package gui.project.practice;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class EventTest4 extends JFrame {
private JButton button;
private JLabel label;
int counter = 0;
public EventTest4() {
setSize(400, 150);
setTitle("이벤트 예제");
JPanel panel = new JPanel();
button = new JButton("증가");
label = new JLabel("현재의 카운터 값: " + counter);
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
counter++;
label.setText("현재의 카운터 값: " + counter);
}
});
panel.add(label);
panel.add(button);
add(panel);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] args) {
EventTest4 t = new EventTest4();
}
}
EventTest5.java
package gui.project.practice;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class EventTest5 extends JFrame {
private JButton button;
private JLabel label;
int counter = 0;
public EventTest5() {
setSize(400, 150);
setTitle("이벤트 예제");
JPanel panel = new JPanel();
button = new JButton("증가");
label = new JLabel("현재의 카운터 값: " + counter);
button.addActionListener(e -> {
counter++;
label.setText("현재의 카운터값: " + counter);
});
panel.add(label);
panel.add(button);
add(panel);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] args) {
EventTest5 t = new EventTest5();
}
}
KeyEventTest.java
package gui.project.practice;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JTextField;
public class KeyEventTest extends JFrame implements KeyListener {
public KeyEventTest() {
setTitle("이벤트 예제");
setSize(300, 200);
JTextField tf = new JTextField(20);
tf.addKeyListener(this);
add(tf);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
@Override
public void keyTyped(KeyEvent e) {
display(e, "keyTyped");
}
@Override
public void keyPressed(KeyEvent e) {
display(e, "keyPressed");
}
@Override
public void keyReleased(KeyEvent e) {
display(e, "Key Realeasd");
}
protected void display(KeyEvent e, String s) {
char c = e.getKeyChar();
int keyCode = e.getKeyCode();
String modifiers = e.isAltDown() + " " + e.isControlDown() + " " + e.isShiftDown();
System.out.println(s + " " + keyCode + " " + modifiers);
}
public static void main(String[] args) {
KeyEventTest f = new KeyEventTest();
}
}
LabelTest.java
package gui.project.practice;
import java.awt.Color;
import java.awt.Font;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class LAbelTest extends JFrame {
private JPanel panel;
private JLabel label1, label2;
public LAbelTest() {
setTitle("레이블 테스트");
setSize(400, 150);
panel = new JPanel();
label1 = new JLabel("Color Label");
label1.setForeground(Color.blue);
label2 = new JLabel("Font Label");
label2.setFont(new Font("Arial", Font.ITALIC, 30));
label2.setForeground(Color.ORANGE);
panel.add(label1);
panel.add(label2);
add(panel);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new LAbelTest();
}
}