[Java/Swing] 이벤트 리스너 (Event Listener)
·
Java/Swing (GUI)
이벤트 리스너 (Event Listener, 이벤트 핸들러)  - 이벤트의 발생을 감지하고, 이벤트에 대한 처리를 담당하는 객체  - 실행의 흐름을 만들 수 있음  - implements 키워드로 인터페이스를 받지 않고, 구현 클래스를 이용할 수도 있음      · 구현 클래스 관련 설명 : https://young0105.tistory.com/82  ActionListener 인터페이스  - 버튼을 눌렀을 때 이벤트가 발생함   - 해당 클래스는 'ActionListener' 인터페이스가 적용됨      → 다형성 : 자기 자신의 자료형으로 사용할 수도 있고, ActionListener 타입으로 사용할 수도 있음  - 인터페이스를 불러오면 'actionPerformed' 메서드가 자동으로 호출됨    ..
[Java] 내부 클래스와 익명 클래스
·
Java/Base
내부 클래스 (Inner class, 중첩 클래스)  - 클래스 내부에서 선언한 다른 클래스      → 해당 클래스를 감싸고 있는 '외부 클래스'와 밀접한 연관이 있는 경우가 많음  - 다른 외부 클래스에서 사용할 일이 없는 경우에는 내부 클래스로 선언하는 것을 고려할 수 있음      → 장점 : 내부 클래스에서 외부 클래스의 멤버 변수에 접근하기 쉬움                       (코드의 복잡성을 줄임) // 외부 클래스의 인스턴스화외부클래스 참조변수 = new 외부클래스();// 내부 클래스의 인스턴스화 (내부 클래스에 private 선언 시 사용 불가)외부클래스.내부클래스 참조변수 = 외부클래스.new 내부클래스(); #  인스턴스 내부 클래스  - 내부적으로 사용한 클래스 (priv..
[Java/Swing] JLabel 클래스 : 이미지 관련
·
Java/Swing (GUI)
이미지 삽입 및 중첩// 이미지1 위에 이미지2를 중첩시키기private JLabel 이미지1;private JLabel 이미지2;// 생성자public 클래스명() { initData(); setInitLayout();}// 생성자에 사용할 메서드private void initData() // 창 제목, 크기 등 설정 ... // 이미지1 가져오기 이미지1 = new JLabel(new ImageIcon("경로/파일명1.확장자")); 이미지1.setSize(너비, 높이); // 이미지2 가져오기 이미지2 = new JLabel(new ImageIcon("경로/파일명2.확장자")); 이미지2.setSize(너비, 높이);}// 생성자에..
[Java] 오류와 예외 처리
·
Java/Base
프로그램에서의 오류  ① 컴파일 오류 (Compile error)      - 프로그램 코드 작성 중 발생하는 문법적 오류    ② 실행 오류 (Runtime error)      - 실행 중인 프로그램이 의도하지 않은 bug를 만나거나, 프로그램이 중지되는 오류      - 비정상 종료를 일으켜 시스템의 심각한 장애를 유발할 수 있음 오류와 예외   ① 시스템 오류 (Error)      - 프로그래머가 처리할 수 없는, 시스템 레벨에서 발생하는 심각한 문제      - 대부분 JVM이나 하드웨어에서 발생함      ex) 동적 메모리가 없는 경우, 스택 메모리 오버 플로우 등   ② 예외 (Exception)      - 프로그램에서 제어할 수 있는 오류      - 언어의 안전성을 위해, 문법적으로..
[Java/Swing] 이미지 삽입하기
·
Java/Swing (GUI)
코드public class MyImageFrame extends JFrame { ImagePanel imagePanel; // 내부 클래스를 멤버 변수로 선언 public MyImageFrame() { initData(); setInitLayout(); } private void initData() { setTitle("이미지 연습"); setSize(400, 400); setDefaultCloseOperation(3); imagePanel = new ImagePanel(); } private void setInitLayout() { add(imagePanel); setVi..