java - JButton
2020. 6. 17. 19:18
📌 java/java
"JButton" 은 말그대로 버튼이야. 버튼을 레이블처럼 "JFrame"에 붙여서 사용하면 된단다. 그럼 JButton을 배치해보자. JButton 생성하기 "JButton"을 배치하는 건 "JLabel"이랑 똑같아. 바로 사용해보자. 우선 빨간 네모를 보면 JButton 객체를 생성하고 있어. 추가적으로 JButton을 생성할 때 버튼의 타이틀 "Test"를 매개변수로 넘겨주고 있어. 그래서 녹색 네모처름 프레임에 버튼을 붙였을 때, 결과 화면처럼 프레임에 꽉차는 버튼이 생성되게 돼. JButton에서 사용하면 유용한 메소드 가장 많이 사용하는 건 버튼 타이틀 텍스트를 읽거나 변경하는 메소드겠지? 코드 중간에 버튼 타이틀 텍스트를 읽는 메소드는 "getText()" 메소드야. 글고 타이틀을 변경할 때..
java - JLabel
2020. 6. 17. 19:11
📌 java/java
자바에서 레이블을 사용할려면 "JLabel" 이라는 클래스를 사용해야 해. JLabel 생성하기 위 예제의 빨간색 네모를 보면 아주 평범한 객체 생성을 보여주고 있어. 단순하게 생성자의 매개변수로 문자열을 전달해 주고 있어. 이렇게 전달된 문자열이 바로 레이블에 표시될 문자열이야. 이렇게 생성된 "JLabel" 객체를 프레임에 올려야겠지? 녹색 네모부분을 보면 "JFrame"의 메소드 중 "add" 메소드를 활용하여 붙여주면 돼. 위와 같은 레이블이 올라가 있는 윈도우를 확인할 수 있어. JLabel 에서 사용하면 유용한 메소드 이러한 UI 관련된 클래스의 메소드들은 엄청 많기 때문에 그중에서 쓸만한거 골라보자. 우선 기본이 되는 메소드는 문자열을 입력하는 메소드겠지? 바로 "setText" 메소드를 활..
java - JFrame 크기, 위치, 좌표계
2020. 6. 17. 16:19
📌 java/java
JFrame 의 위치 지정하기 JFrame은 엄청나게 많은 메소드들을 가지고 있다. 메소드들을 상황에 맞게 한번 봐보자. 가장 기본이 되는 창의 위치를 지정하는 방법은 "setLocation" 메소드를 사용하면 된다. 자 setLocation 메소드는 니꺼 화면에서 해당 윈도우를 나타낼 위치를 지정하게 된다. 위 그림에서 녹색 네모부분을 보면 setLocation 메소드에 (X좌표값 200, Y좌표값 400)으로 주었다. 그러면 파란색 네모의 윈도우 창이 나타나는데 그 위치가 바로 (200, 400)에 해당하는 위치이다. 자바의 좌표계 자바의 좌표계는 우리가 배웠던 좌표계랑은 위치가 다르다. 원점이 왼쪽 위이다. JFrame의 사이즈 조절 JFrame의 크기를 조절해보자. 이때 사용할 메소드는 "setP..
java - GUI
2020. 6. 17. 16:12
📌 java/java
GUI란 무엇일까? Graphical User Interface 의 약어로 "그래픽 사용자 인터페이스" 라는 의미를 가진다 이말이야. 지금까지 우리가 프로그래밍 한 뒤에 결과값이나 입출력을 커맨드 창에서만 했잖아? 근데 "GUI" 프로그래밍을 하면 하나의 창을 띄우고, 버튼이나 라벨 같은 걸로 꾸밀수 있어. 간단한 HelloWorld 부터 GUI로 출력해보자. 봐라. 새로운 창에 헬로 월드가 출력돼있지? 여기서 구조를 설명해보자면 위 그림처럼 구성되어 있어 우선 기본 윈도우가 되는 "JFrame"이 있단다. 위 그림이 윈도우 창인 "JFrame" 이야. 이 JFrame 위에다가 버튼이고 라벨이고 뭐든 배치해서 사용하는 그릇이라고 보면 돼 그래서 "JLabel" 을 "JFrame" 위에 올려서 사용하고 있..
java - Graphics
2020. 6. 17. 16:02
📌 java/java
그림을 그리기 위해서는 그림을 그리기 위한 도구가 필요하다. 첫번째로 글미 그릴 도화지이고, 두번째는 그림을 그려낼 도구들이다. 자바에서는 이러한 2개를 제공해주는데 우선 그림을 그릴 도화지는 JPanel 클래스를 사용하면 된다. 그리고 JPanel 에는 paint라는 메소드를 제공해 주는데 이 메소드를 오버라이딩하면 Graphics라는 클래스 객체를 제공해준다. 이 Graphics 라는 클래스 객체가 바로 그림을 그려낼 도구들을 의미한다. 위 소스코드가 그림을 그리기 위한 가장 기본 코드이다. 우선 빨간색 네모 부분을 보면 새로운 "DrawPanel" 이라는 클래스를 정의하고 있다. JPanel 클래스를 상속받아서 정의 되어진 DrawPanel 클래스는 Paint라는 메소드를 오버라이딩하고 있다. 이 ..
java - JPanel
2020. 6. 17. 15:09
📌 java/java
JPanel 이란? 쉽게 생각하면 조각난 프레임이라고 생각하면 된다. 왜냐하면 프레임에서 레이아웃 적용과 각종 "UI" 배치들을 "JPanel"에서 다 할 수 있기 때문이다. 위 그림을 보면 "JFrame"에 바로 "UI"들이 붙었다면 이번에는 "JPanel"을 올리고 그 위에 "UI"들을 올리는 방식이다. 다시 쉽게 설명하면 1. JFrame : 메인 프레임 2. JPanel : 보조 프레임 (페널이라고도 한다) 3. JLabel 등 각종 UI : 기능을 수행하는 컴포넌트 이다. 이 페널은 프레임처럼 레이아웃을 설정하여 각종 "UI"를 자신에 배치할 수 있다. 그 다음 페널 자신을 프레임 위에 올려둠으로써 자신 위에 있는 "UI"들을 보여준다. JPanel 을 왜 사용하느냐? 빨간색 네모부분이 JPan..
java - TreeSet
2020. 6. 13. 17:28
📌 java/java
TreeSet - 범위 검색과 정렬에 유리하다. 범위 검색과 정렬에 유리한 이진 검색 트리로 구현한다. linked list처럼 각 요소(node)가 나무(tree)형태로 연결된 구조이다. 이진 트리는 모든 노드가 최대 두 개의 하위 노드를 갖는다. (부모-자식)
java - HashMap
2020. 6. 12. 19:59
📌 java/java
Hashing 기법으로 데이터를 저장한다. 데이터가 많아도 검색이 빠르다. Map 인터페이스를 구현하며 데이터를 키와 값의 쌍으로 저장한다. 키 (Key) : 컬렉션 내의 키 중에서 유일해야 한다. 값 (Value) : 키와 달리 데이터의 중복을 허용한다. Entry[] table; class Entry{ Object key; Object value; } HashMap - 주요 메서드 매개변수의 타입이 Map인
java - Collections Framework (List, Set, Map)
2020. 6. 9. 16:09
📌 java/java
이전 시간에 배열에 대해서 공부했다. 배열은 연관된 데이터를 관리하기 위한 수단이었다. 그런데 배열에는 몇가지 불편한 점이 있었는데 그 중의 하나가 한번 정해진 배열의 크기를 변경할 수 없다는 점이다. 이러한 불편함을 컬렉션즈 프래임워크를 사용하면 줄어든다. ArrayList package org.opentutorials.javatutorials.collection; import java.util.ArrayList; public class ArrayListDemo { public static void main(String[] args) { String[] arrayObj = new String[2]; arrayObj[0] = "one"; arrayObj[1] = "two"; // arrayObj[2] =..
java 용어 요약
2020. 6. 2. 11:58
📌 java/java
abstract : 사용자가 직접 예쁘게 디자인 해야하는 부분은 abstract로 선언한다. + 상속 강제
java - Generic
2020. 6. 2. 11:35
📌 java/java
어떠한 변수에 들어갈 값, 데이터 타입과 관련이 있다. 제네릭(Generic)은 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법을 의미한다. 말이 어렵다. 아래 그림을 보자. T라는 것은 info라는 데이터 타입이다. info라는 필드의 데이터 테입이 String이 되거나 ,StringBuilder가 된다. Person p1 = new Person(); Person p2 = new Person(); package org.opentutorials.javatutorials.generic; class Person{ public T info; } public class GenericDemo { public static void main(String[] args) { Person p1 = new Pe..
java - Anonymous class
2020. 5. 16. 12:29
📌 java/java
https://www.youtube.com/watch?v=jRusDJ5ca4g&list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp&index=95 자기 이름을 못 쓰고 조상클래스의 이름을 쓴다. 혹은 interface를 쓰던가 한다. 익명이니까 이름을 못 쓴다. 이름이 없어서 숫자가 붙는다. 일회성이니까 이렇게 안쓰고 밑에 처럼 쓴다. new 조상 이름 or 인터페이스 이름 { }; 예제 조상 이름으로 쓴다. 클래스 이름도 정의해줘야 하니까 new ActionListner() {}; 라고 쓴다. 그리고 안의 내용을 그대로 집어 넣으면 된다.
java - inner class (자바의 정석)
2020. 5. 13. 22:17
📌 java/java
www.youtube.com/watch?v=cZJyRGX2VoM&list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp&index=95&t=0s 1. 외부 클래스의 인스턴스를 먼저 생성해야 인스턴스 클래스의 인스턴스를 생성 가능하다. class B에서 class A의 객체를 생성해야 쓸 수 있는데 class A의 객체를 만들지 않아도 class B에서 class A의 객체를 쓸 수 있다. BBB 클래스에서 b 객체를 사용하려면 또 AAA클래스에서 b객체를 만들어야 한다. BBB클래스는 AAA 안에서만 사용한다는 가정하에 inner class로 해준 것이다. 여기서 main에서 내부클래스의 BBB 객체는 생성하지 못한다. 왜냐하면 내부클래스는 외부클래스를 먼저 생성한 다음에야 생성이 가능하..
java - Inner Class
2020. 5. 13. 20:18
📌 java/java
Inner Classes 클래스나 인터페이스 내부에서 선언한다. 코드를 더 읽기 쉽고, 더 오래 유지하기 위해 사용한다. 이너클래스는 모든 멤버, 메소드에 접근 가능하다. 이너 클래스 vs 중첩 클래스 Inner 클래스는 중첩클래스의 한 부분이다. 정적 중첩 클래스는 이너 클래스이다. 중첩클래스의 2가지 타입 1. 정적 중첩클래스 = 이너 클래스 2. 동적 중첩클래스 정적 중첩 클래스 (이너 클래스) 멤버 이너 클래스 익명 이너 클래스 지역 이너 클래스 동적 중첩 클래스 1. Member inner class 정적 중첩 클래스는 클래스 내에서 만들어지고, 외부 메소드는 Member inner class라고 불린다. 멤버 이너 클래스로 msg() 메쏘드 만들기 컴파일러는 inner class의 케이스 안에..
java - getClass()
2020. 5. 1. 16:35
📌 java/java
java.lang.Object 클래스는 Java에서 만드는 모든 클래스들의 root 이며, 따라서 모든 클래스들은 java.lang.Object를 superclass로 갖고 태어난다. Object 클래스의 구현을 보면 @since JDK1.0로 주석이 달려있다. JDK의 시작부터 함께해왔던 클래스인만큼, Java로 애플리케이션을 만든다면 Object 클래스에 대해서 파악해둘 필요성이 있을 것이다. getClass() 메서드 java.lang의 Object 클래스 중에서 getClass() 메소드에 대해 알아보자. 현재 참조하고 있는 클래스를 확인할 수 있는 메소드이다. A라는 클래스를 참조하고 있다면 class A 라는 값이 출력된다. 객체 타입을 확인하는데 쓰이는 instanceof 와 함께 알아두면 ..
java - Object 클래스
2020. 4. 30. 17:17
📌 java/java
자바에서 상속이란 필수적이다. 여러분이 상속하건 하지 않았건 기본적인 상속을 하게 된다. package org.opentutorials.javatutorials.progenitor; class O {} O라고 하는 클래스를 정의했다. 그리고 다른 클래스를 상속받고 있지 않다. 그러나 위의 코드는 아래와 코드가 같다. package org.opentutorials.javatutorials.progenitor; class O extends Object {} 자바에서 어떤 클래스가 다른 클래스를 상속받고 있지 않는다면 Object를 상속받게 한다. 자바에서 모든 클래스는 사실 Object를 암시적으로 상속받고 있는 것이다. 그런 점에서 Object는 모든 클래스의 조상이라고 할 수 있다. 그 이유는 모든 클래..