개발일지/자바74 (Image Class, inner Class 활용), 이미지 파일 불러오는 법 - 1 Inner Class (내부 클래스) 자바의 이너 클래서 혹은 중첩클래스라고 한다. 하나의 클래스로 클래스나 인터페이스 내부에서 선언한다. 코드를 더 읽기 쉽고, 더 오래 유지 하기 위해 논리적인 그룹과 인터페이스들에서 이너클래스를 사용한다. 추가로 이너클래스는 개인적인 데이터 멤버와 메소드를 포함하는 외부 클래스의 모든 멤버들에 접근이 가능하다. package eventPractice; // 1. inner클래스(ImagePanel) 안에서 파일을 불러와 그림을 그려준다 // 2. inner 클래스를 MyFrame1에 멤버 변수로 선언해준다. // 3. 프레임을 셋팅해주고나서 inner 클래스를 new() 해주고나서 add(프레임에 배치) 를 해주면 된다. import java.awt.Graphics;.. 개발일지/자바 2022. 9. 14. GridLayout(배열, ArrayList활용) GridLayout은 컨테이너를 테이블처럼 행과 열로 나누어 컴포넌트를 배치한다. 여기에 추가되는 컴포넌트들은 모두 같은 크기로 나누어지며, 컨테이너의 크기를 변경하면 각 영역이 모두 같은 비율로 커지거나 작아지는 성질을 갖고 있다. 특징 : 화면을 꽉 채우는 특징이 있다. Frame에 Button이 추가될 때 어떤 순서로 GridLayout의 영역에 추가되는지 쉽게 알 수 있을 것이다. 첫번째 행의 열들을 모두 채운 후에 그 아래 행의 열들을 채운다. 이와 같은 방식으로 컴포넌트들이 추가되게 된다. 그리고 , 오른쪽의 그림은 실행 후 Frame의 크기를 늘린 것인데, 늘어난 후에도 각 영역의 Button 들이 모두 같은 크기를 유지하는 것을 알 수 있다.(각 영역은 서로 다른 크기로 지정될 수 있으며,.. 개발일지/자바 2022. 9. 13. BorderLayout(배열, ArrayList활용) BorderLayout은 컨테이너를 North, South, East, West, Center 모두 5개의 영역으로 나누고, 각 영역에 하나의 컴포넌트만을 배치할 수 있도록 한다. 그래서 한 영역에 여러 개의 컴포넌트를 배치하면, 마지막에 추가한 컴포넌트만 보이게 된다. 한 영역에 하나 이상의 컴포넌트르 넣기 위해 Panel을 이용해야 한다. Panel에 원하는 컴포넌트들을 넣은 다음, BorderLayout의 한 영역에 다시 이 Panel을 넣으면 된다. BorderLayout은 컨테이너인 Window, Frame, Dialog의 기본 Layout이다. 즉, 이 컨테이너들의 레이아웃 매너저는 따로 설정하지 않아도 생성되어질 때부터 이미 BorderLayout으로 설정되어 있다는 것이다. 예제를 실행시킨.. 개발일지/자바 2022. 9. 13. FlowLayout(ArrayList 활용) ArrayList를 이용하면 배열과 다르게 몇번을 반복을돌려 값을 꺼낼지 상수로 선언을 해줘야하는 차이점이 있다. 만약 arrayList.size()을 이용하여 크기를 정하게되면 확실하게 몇번을 버튼을 new해줘야할지 모른다. 그래서 반복의 횟수는 정해줘야한다. package ch01; import java.awt.FlowLayout; import java.util.ArrayList; import javax.swing.JButton; import javax.swing.JFrame; public class FlowLayoutEx4 extends JFrame { // 배열로 만들어서 코드를 수정 // 생성시 for문 활용 // 정 가운데 배치 (수직) // 배열, ArrayList(멤버변수 선언과 동시에 초.. 개발일지/자바 2022. 9. 13. FlowLayout (배열 활용) 버튼을 연속적으로 만들때 배열을 활용하면 코드를 간소화 시킬수있다. package ch01; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JFrame; public class FlowLayoutEx3 extends JFrame { // 배열로 만들어서 코드를 수정 // 생성시 for문 활용 // 정 가운데 배치 (수직) // 배열, ArrayList(멤버변수 선언과 동시에 초기화 private JButton[] buttons = new JButton[5]; private FlowLayout flowLayout; public FlowLayoutEx3() { initData(); setInitLayout(); } // .. 개발일지/자바 2022. 9. 13. FlowLayout활용 JFrame은 java swing 클래스의 일부이며 구현되는 하나의 창이다. Swing은 자바에서 그래픽 사용자 인터페이스를 구현하기 위하여 제공되는 클래스이다. 또한 버튼, 창, 표, 트리 등의 컴포넌트들을 이용할 수 있게 해주는 클래스 이다. 사용할 컴포넌트를 멤버 변수에 선언을 해준다. 그리고나서 메소드를 두개로 나누어 보기 쉽게 분리를 해준다. FlowLayout은 컴포넌트들이 추가되는 순서에 따라 왼쪽에서 오른쪽으로 이어져나가며, 공간이 부족하면, 아랫줄에 추가된다. 이것은 마치 글자를 입력하면 왼쪽에서 오른쪽으로 진행해 나가며, 한 라인의 끝에 다다르면, 다음 라인의 처음부터 글자가 입력되는 워드프로세서에서의 문자입력과 매우 유사하다. 또한 컴포넌트의 정렬에 있어서도 워드프로세서에서와 같이 왼.. 개발일지/자바 2022. 9. 13. 인터페이스(Interface) 인터페이스란? 구현된 것이 아무것도 없는 밑 그림만 잇는 기본 설계도 (기능 중심 설계) *특성 멤버 변수, 일반 메서드를 가질 수 없고, 오직 추상 메서드와 상수만을 멤버로 가질 수 있다. * 추상 클래스보다 추상화가 더 높다. * 인터페이스는 표준, 약속, 규칙(강제성이 있는 규칙이다.) * 사용방법 * class 키워드 대신에 interface라는 키워드를 사용한다. * class와 같이 접근 제어 지시자를 public, default를 사용 할 수 있다. * 제약 사항 * 모든 멤버 변수는 public static final 이어야 한다. ex) public static final int SERIAL_NUMBER = 100; // 상수만을 가질 수 있다. public abstract void tu.. 개발일지/자바 2022. 9. 7. 디자인패턴 - 템플릿 패턴(final 사용법) 템플릿 메소드 패턴(Template Method Pattern) 이란? - 추상 메서드나 구현 된 메서드를 활용하여 코드의 흐름(시나리오)를 정의하는 메서드 - final 선언하여 하위 클래스에 재정의 할 수 없게 함 - 프레임워크에서 많이 사용되는 설계패턴 - 추상 클래스로 선언된 상위 클래스에서 탬플릿 메서드를 활용하여 전체적인 흐름을 정의 하고 하위 클래스에서 다르게 구현되어야 하는 부분은 추상 메서드로 선언하여 하위 클래스에서 구현 하도록 함 방법 1. (부모클래스) public abstract class [클래스명] { -- 부모클래스 } ----------------------------------------------------------------------------------------.. 개발일지/자바 2022. 9. 7. 업캐스팅, 다운캐스팅 캐스팅이란(Casting) : 캐스팅이란 타입을 변환하는 것을 말하며 형변환이라고도 한다. 자바의 상속 관계에 있는 부모와 자식 클래스 간에는 서로 간의 형변환이 가능하다. 업캐스팅이란(Upcasting) : 업캐스팅이란 자식 클래스의 객체가 부모 클래스 타입으로 형변환 되는 것을 말한다. 아래 코드에서 부모 클래스는 Person, 자식 클래스는 Student이다. 아래 코드에서 Person p = s; 부분이 업캐스팅한 부분이다. p가 Student 객체를 가리키지만, p는 Person 타입이기 때문에 Person 클래스의 멤버에만 접근이 가능하다. 그렇기 때문에 p.check에서 컴파일 타임 에러가 발생한다. 다운캐스팅이란(Downcasting) : 업캐스팅과 반대로 캐스팅 하는 것을 다운캐스팅이라고.. 개발일지/자바 2022. 9. 7. 추상 클래스 자바에서는 하나 이상의 추상 메소드를 포함하는 클래스를 가리켜 추상 클래스(abstract class)라고 합니다. 추상클래스선언 -특징- * 1. 클래스 type 앞에 abstract 키워드가 붙는다. * 2. 추상 클래스는 생성할 수 없다. (new를 할수없다 단순히 설계 역할만 한다.) * 3. 추상 메소드를 포함 할 수 있다. 하지만 추상 메소드를 꼭 포함하지는 않아도 된다. 추상 메소드(abstract method)란 자식 클래스에서 반드시 오버라이딩해야만 사용할 수 있는 메소드를 의미한다. 자바에서 추상 메소드를 선언하여 사용하는 목적은 추상 메소드가 포함된 클래스를 상속받는 자식 클래스가 반드시 추상 메소드를 구현하도록 하기 위함이다. 추상메소드의 형태 (상속받은 클래스에서 사용할땐 Over.. 개발일지/자바 2022. 9. 5. 상속(부모, 자식 클래스) , 다형성 - 오버라이드(@Override) 상속이란? 쉽게 말해 부모 클래스(상위 클래스)와 자식 클래스(하위 클래스)가 있으며, 자식 클래스는 부모 클래스를 선택해서, 그 부모의 멤버를 상속받아 그대로 쓸 수 있게 된다. 상속을 하는 이유는 간단하다. 이미 마련되어 있던 클래스를 재사용해서 만들 수 있기 때문에 효율적이고, 개발 시간을 줄여주게 때문이다. 상속을 하더라도 자식 클래스가 부모의 모든 것들을 물려받는 것은 아니다. 부모 클래스의 private 접근 제한을 갖는 필드 및 메소드는 자식이 물려받을 수 없다. (priavate = 공유가 안됨) 부모와 자식 클래스가 서로 다른 패키지에 있다면, 부모의 default 접근 제한을 갖는 필드 및 메소드도 자식이 물려받을 수 없다 (default 접근 제한은 ‘같은 패키지에 있는 클래스’만 접.. 개발일지/자바 2022. 9. 5. 배열 - Array 배열이란? 동일한 자료형(Data Type)의 데이터를 연속된 공간에 저장하기 위한 자료구조이다. 즉, 연관된 데이터를 그룹화하여 묶어준다고 생각하면 된다. 배열의 장점 : 연관된 데이터를 저장하기 위한 변수의 선언을 줄여주며, 반복문 등을 이용하여 계산과 같은 과정을 쉽게 처리할 수 있다. 배열을 정의하는 방법은 크게 2가지가 있다. /* 1번방식 */ int[] intArr = new int[10]; -- 권장 /* 2번방식 */ int intArr2[] = new int[5]; 첫 번째 방법은 데이터들의 값을 알고 있을 때 사용하면 편리하다 인덱스 번호는 첫번째부터 0부터 시작을 한다 밑에 그림에서 보면 알수가있다. 배열의 공간을 지정하지않고 중괄호 안에 데이터를 넣었다. 그럼 strArr1의 배열.. 개발일지/자바 2022. 9. 4. 이전 1 2 3 4 5 6 7 다음