자바프로그래밍1 기말고사
범위: 중간고사문제 포함 – 중간고사 이후 끝까지 (강의노트, 숙제, 수업블로그, 예제 중심으로)
일시: 2026/06/10(수) 2026/06/11(목) 오후 6:00-7:10
장소: 인문관 209호
Midterm
유형: 필기시험
범위: 처음부터 배운데까지
일시: 2026년 4월 23일(목) 18:00-19:00
장소: 인문관 209호
5 Ways to Implement Event Listener
Slider(JSlider, JLabel)
1. event listener using anonymous class
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
// SliderFrame1 shows event listener using anonymous class
public class SliderFrame1 extends JFrame {
JPanel panel = new JPanel(new BorderLayout());
JSlider slider = new JSlider(JSlider.HORIZONTAL, 0, 100, 20);
JLabel label = new JLabel("Value : ", JLabel.CENTER);
public SliderFrame1(String name) {
super(name);
this.add(panel);
this.panel.add(slider, BorderLayout.CENTER);
this.panel.add(label, BorderLayout.SOUTH);
// using anonymous class
this.slider.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
JSlider s = (JSlider)e.getSource();
label.setText("Value : " + s.getValue());
}
});
this.setSize(250, 150);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new SliderFrame1("SliderTest1");
}
}
2. event listener using interface implements
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
// using implements ChangeListener
public class SliderFrame2 extends JFrame implements ChangeListener {
JPanel panel = new JPanel(new BorderLayout());
JSlider slider = new JSlider(JSlider.HORIZONTAL, 0, 100, 20);
JLabel label = new JLabel("Value : ", JLabel.CENTER);
public SliderFrame2(String name) {
super(name);
this.add(panel);
this.panel.add(slider, BorderLayout.CENTER);
this.panel.add(label, BorderLayout.SOUTH);
this.slider.addChangeListener(this); // implements ChangeListener
this.setSize(250, 150);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new SliderFrame2("SliderTest2");
}
@Override
public void stateChanged(ChangeEvent e) {
JSlider s = (JSlider)e.getSource();
label.setText("Value : " + s.getValue());
}
}
3. event listener using private inner class
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public class SliderFrame3 extends JFrame {
JPanel panel = new JPanel(new BorderLayout());
JSlider slider = new JSlider(JSlider.HORIZONTAL, 0, 100, 20);
JLabel label = new JLabel("Value : ", JLabel.CENTER);
// using private inner class
private class SliderChangeListener implements ChangeListener {
@Override
public void stateChanged(ChangeEvent e) {
JSlider s = (JSlider)e.getSource();
label.setText("Value : " + s.getValue());
}
}
public SliderFrame3(String name) {
super(name);
this.add(panel);
this.panel.add(slider, BorderLayout.CENTER);
this.panel.add(label, BorderLayout.SOUTH);
this.slider.addChangeListener(new SliderChangeListener()); // private class
this.setSize(250, 150);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new SliderFrame3("SliderTest3");
}
}
4. event listener using outer class
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
// using private inner class
class SliderChangeListener implements ChangeListener {
JLabel label = null;
public SliderChangeListener(JLabel label) {
this.label = label;
}
@Override
public void stateChanged(ChangeEvent e) {
JSlider s = (JSlider)e.getSource();
label.setText("Value : " + s.getValue());
}
}
public class SliderFrame4 extends JFrame {
JPanel panel = new JPanel(new BorderLayout());
JSlider slider = new JSlider(JSlider.HORIZONTAL, 0, 100, 20);
JLabel label = new JLabel("Value : ", JLabel.CENTER);
public SliderFrame4(String name) {
super(name);
this.add(panel);
this.panel.add(slider, BorderLayout.CENTER);
this.panel.add(label, BorderLayout.SOUTH);
this.slider.addChangeListener(new SliderChangeListener(this.label)); // outer class
this.setSize(250, 150);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new SliderFrame4("SliderTest4");
}
}
5. event listener using lambda
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
// SliderFrame5 shows event listener using lambda
public class SliderFrame5 extends JFrame {
JPanel panel = new JPanel(new BorderLayout());
JSlider slider = new JSlider(JSlider.HORIZONTAL, 0, 100, 20);
JLabel label = new JLabel("Value : ", JLabel.CENTER);
public SliderFrame5(String name) {
super(name);
this.add(panel);
this.panel.add(slider, BorderLayout.CENTER);
this.panel.add(label, BorderLayout.SOUTH);
// using lambda
this.slider.addChangeListener(e -> { // lambda
JSlider s = (JSlider)e.getSource();
label.setText("Value : " + s.getValue());
});
this.setSize(250, 150);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new SliderFrame5("SliderTest5");
}
}
Java Layout Manager
Java Swing Component
https://www.javatpoint.com/java-swing
https://www.javatpoint.com/java-jbutton
https://www.javatpoint.com/java-jlabel
https://www.javatpoint.com/java-jtextfield
https://www.javatpoint.com/java-jcheckbox
https://www.javatpoint.com/java-jradiobutton
https://www.javatpoint.com/java-jcombobox
https://www.javatpoint.com/java-jtable
https://www.javatpoint.com/java-jslider
https://www.javatpoint.com/java-jdialog
https://www.javatpoint.com/java-jpanel
https://www.javatpoint.com/java-jfilechooser
https://www.javatpoint.com/java-jtogglebutton
https://www.javatpoint.com/java-jframe
https://www.javatpoint.com/java-jscrollpane
lecture11
lecture11
java1-lecture11-GUI
PersonPackageTest
PersonPackageTest
kr.ac.dankook.ace.app
kr.ac.dankook.ace.dao
kr.ac.dankook.ace.dto
PersonPackageTest-src
Difference between a module and a package
https://learnjava.co.in/what-is-the-difference-between-a-module-and-a-package/
| Package | Module |
|---|---|
| A package cannot be deployed by itself | A module can be deployed by itself |
| A package groups together related classes | A module groups together related packages |
| Packages are present in Java right from the beginning | Modules were added by Java 9 |
| Packages were added to keep related classes together and to allow developers to have a class with the same name in a different packages | Modules were added for security reasons and to reduce the size of the JDK |
| Classes defined within a package are accessible via reflection even if they are private | Classes defined within a module are not accessible outside the module via reflection |
| Packages do not require a package descriptor | Modules require a module descriptor which is a file called module-info.java |
lecture10
lecture10
java1-lecture10-PackageModule
FileIO & Exception
PersonStreamTest – text file read using BinaryStream, Reader
PersonStreamTest
ImageTest – try/catch, throw
ImageTest
Exceptions

ArrayIndexOutOfBoundsException 배열의 범위를 벗어난 접근할 때 발생
ArithmeticException 산술 연산 오류 에 의해 발생 (예를 들어, 0으로 정수를 나누는 경우)
NullPointerException null 객체를 사용하려고 시도할 때 발생
ClassCastException 변환할 수 없는 클래스로 객체 변환을 시도할 때 발생
NumberFormatException String을 숫자(number)로 변환할 수 없을 때 발생 (예를 들어, “1.23”을 Integer 변환을 시도할 때)
IllegalArgumentException 메소드 인자(argument) 유형을 잘못 사용할 경우
InputMismatchException (Scanner 클래스) 잘못된 입력일 때 발생
IOException 입출력(IO) 오류에 의해 발생
FileNotFoundException 지정된 경로에서 파일을 찾지 못할 때 발생
