*스레드 (Thread)

 

- 프로그램을 구성하는 명령문은 순서대로 하나씩 처리 되는것이 기본이다.

  조건문,반복문,메소드 호출문으로 복잡하게 얽혀있는 프로그램도 명령문이 실행되는 순서를

  따라가다보면 길게 연결된 한 가닥 실과 같은 흐름이 있다.

  이런 실행 흐름을 스레드(Thread)라고 부른다.

 

- 스레드 객체는 한번만 사용이 가능하다.

 

 

 

#싱글 스레드 (Single Thread)

 

- Single Thread 프로그램 스레드는 main 메소드의 첫번째 명령문부터 시작되고

  main 메소드의 마지막에 도달하거나 return문을 만나면 끝이난다.

 

 

 

 

 

#스레드 구현 Runnable 인터페이스 활용

 

- 클래스에 상속받아 구현하는것이 아닌 Ruunable 인터페이스를 사용해 구현

 

- 특정 기능이 있는 클래스를 상속받아 사용해야 하는데 그 기능을 스레드로 돌리고 싶을때 사용

 

 

 

 

#스레드간의 커뮤니케이션

 

- 공용데이터를 만들어 그 플래그 값을 기준으로 프로세스 진행을 제어하는 방법

 

 

 

 

- 자바의 컴파일러는 프로그램 성능 향상을 위해서 값을 바꾸지 않고 반복해서

  체크할 경우 그 값을 한번 가져다 놓고 여러번 사용하기 때문에 위의 예제에서는

  문제가 된다.

  그럴경우에 최적화 없이 항상 가져다 체크하도록 명령을 내리는 volatile명령어를 쓰면 된다.

 

 

 

 

 

#2개의 쓰레드를 활용하여 캐릭터끼리 공격과 방어를 하는 게임만들기

 

- 영단어는 랜덤으로 나옴 영어 스펠링을 맞추면 공격 스펠링이 틀리면 상대방 체력증가

 

- 방어 턴일 때는 에너지 증가

 

- 상대방 에너지가 0이 되면 승리

 

 

 

 

 

#황금알 낳는 거위 프로그램 만들어보기

 

- 황금알을 낳는 클래스가 있다. 이 거위는 1초마다 알을 1개씩 낳는다.

 

- 엔터키를 입력하면 거위를 우리 밖에 꺼내놓고  그동안 낳은 알을 모두 가져온다. 모두 가져오는 시간은 3초걸린다.

 

- 알을 가져오는 동안은 거위는 밖에 있으므로 알을 낳지 않는다.

 

 

 

 

 

 

#스레드 구현 커뮤니케이션2

 

- 스레드끼리 신호를 직접적으로 주고 받는 방법으로 공유 객체를 통해서 notify와 wait로 연락을

  주고 받을 수 있다.

 

- 스레드는 공유 객체에서 wait메소드를 notify가 올 때까지 대기 상태가 된다.

 

- 다른 스레드는 먼저 끝내야 할 작업을 끝낸 후 공유 객체를 통해서 notify메소드를 호출해주면 

  wait 하고 있던 상대방 스레드는 다시 작동을 하게 된다.

 

 

 

#이전에 플래그 값을 세워서 동기화를 구현했던 예제에서 notify와 wait를 구현해보자

 

- isDone값을 한번 체크하고 루프를 돌면서 또 체크 하지말고 wait로 다른 스레드에서 결과가

  끝나고 호출을 보내주기를 기다린다. (동기화 처리 필요)

 

- 작업이 끝난 후에 notify로 작업이 끝났다고 notify를 날려서 wait 대기 중인 스레드를 다시 실행하도록 한다.

  (동기화 처리 필요)

 

 

  

 

#스레드를 총합적으로 복습해보자

 

- 단어장 배열에 10개의 단어가 있으며 0~9번까지 배열을 돌면서 각 문제를 가져와

  문제를 보여준다. 단, 한번은 영어를 보여주고 한글뜻을 입력하고 한번은 한글을 보여주고

  영어 철자를 입력하는 프로그램이다.

 

- 문제를 푸는동안 2개의 스레드가 돌아간다.

 

-> 한글을 풀때 시간을 체크하는 스레드

-> 영어를 풀때 시간을 체크하는 스레드

 

- 모든 문제를 풀고 나서 각각 소요된 시간 결과를 보여준다.

 

'Java > Java2' 카테고리의 다른 글

Java [Canvas,Swing]  (0) 2017.09.30
Java [자료구조]  (0) 2017.09.24
Java [예외처리,직렬화]  (0) 2017.09.18
Java [Object,Inner 클래스]  (0) 2017.09.16
Java [Gregorian Calendar,Math,Wrapper]  (0) 2017.09.14

* Canvas

 

- 그래픽적인 화면을 그리는 요소 객체

 

- panel과 비슷하게 frame에 올리면 되지만 panel과는 다르게 버튼이랑 라벨 등

  다른 객체를 포함하지는 않는다.

 

 

#Canvas 사용방법

 

- 캔버스를 상속받을 클래스를 만든다.

 

- paint 메소드를 오버라이드 한다.

 

- 파라미터로 들어몬 Graphics 객체를 이용해서 그림을 그린다.

 

 

#Canvas 주요 메소드

 

- setColor : 색상을 지정하는 함수 Color 클래스안에 있는 색깔을 지정해서 사용한다.

                텍스트나 도형을 그릴 때 여기서 지정한 색깔로 그려진다.

 

 

 

 

- drawString : 문자를 적는 메소드  문자내용, x좌표 , y좌표 3개의 파라미터를 사용하며 Font 객체를 이용해서

                   문자스타일을 수정할 수 있다.

 

 

 

 

- drawLine : 라인을 긋는 메소드 파라미터로 시작점 x좌표,시작점 y좌표,도착점 x좌표,도착점 y좌표를 지정해주면

                해당하는 점 사이에 라인을 그린다.

 

 

 

 

- drawOval : 원을 그리는 메소드 파라미터로 x좌표,y좌표,가로,세로를 지정하면 해당하는

                 크기만큼 원을 그린다.

 

 

 

 

 

- fillOval : 채우기가 되어있는 원을 그리는 메소드 drawOval과 사용법 동일

 

 

 

 

 

 

- drawRect : 사각형 그리는 메소드

 

 

 

 

 

 

- fillRect : 채우기가 되어 있는 사각형 그리는 메소드 drawRect와 사용법이 동일

 

 

 

 

 

 

- drawImage : 이미지를 그리는 메소드 Toolkit을 이용해서 이미지를 불러오며 이때 이미지의 위치는 프로젝트

                   내의 최상위를 기본으로 한다.

                   파라미터로 image 객체, x좌표,y좌표,가로,세로,frame 객체를 넘겨준다.

 

 

 

 

 

 

#Swing

 

- 자바 영역에서 사용하는 look&feel 을 적용 받아 모든 운영체제에서 동일한 느낌을 제공

 

- AWT와 가장 큰 차이점은 플랫폼으로부터 어떠한 native code도 가져다가 사용하지 않는 다는 것이다.

  사용 방법이나 코드 모양은 AWT와 거의 흡사하지만 내부적으로 실행되는 것은 완전히 다르다.

 

- 주의점은 AWT와는 달리 Frame에 직접 올리면 안되고 무조건 panel을 통해서 올려야 한다.

 

 

#Swing 주요 클래스 및 메소드

 

- 윈도우의 닫기 버튼을 동작하기 위해서는 AWT와는 다르게 아래와 같이 설정을 해야 한다.

 

- setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

 

- 기본적으로 AWT에서 확장된 클래스들은 앞에 'J'를 붙여주면 된다.

 

예) Jframe , Jpanel , Jbutton , JTextField , JTextArea , Jlist , JCombo(Choice)

     Jcheckbox , Jlabel , Jdialog , JFileChooser(FileDialog) , JScrollpane

     JMenuBar , Jmenu , JMenuItem , JPopupMenu

 

 

 

 #Canvas를 이용해 여러가지 그려넣어보기

 

 

 

 

 

 

#Canvas를 이용하여 공 튀기기

 

 

 

 

 

 

 

 

#Canvas keyCode를 받아 공을 방향키로 조작하기

 

 

 

 

 

'Java > Java2' 카테고리의 다른 글

Java [스레드(Thread),멀티 스레드]  (0) 2017.10.03
Java [자료구조]  (0) 2017.09.24
Java [예외처리,직렬화]  (0) 2017.09.18
Java [Object,Inner 클래스]  (0) 2017.09.16
Java [Gregorian Calendar,Math,Wrapper]  (0) 2017.09.14

 

*자료구조

 

- 자료구조란 데이터를 효율적으로 추가,삭제,검색할 수 있도록 구조를 만들어서

  저장해 둔 것

 

- 리스트 : 데이터를 1차원으로 늘어놓은 형태 배열도 1차원 형태로 데이터를 저장하지만

              리스트는 배열과 달리 검색과 추가,삭제가 가능하다.

              데이터를 저장하는 형태에 따라 ArrayList와 연결리스트(Linked List)로 세분하기도 한다.

 

- 스택 : 배낭에 물건을 넣을때 처럼 제일 마지막에 넣은 데이터부터 순서대로 꺼낼 수 있는 구조

 

- 큐 : 매표소에 줄을 서서 기다리는 사람들처럼 들어온 순서대로 데이터를 꺼낼 수 있는 구조 

 

- 해쉬 테이블 : 데이터를 키로 검색하는 것이 가능한 구조

 

- 집합 : 데이터가 중복저장 되지 않게 된 구조 엄연히 말하면 자료구조라 할 수 없다.

 

 

#자료구조 클래스

 

- 자바가 나오기 전까지는 앞에서 말한 자료구조들을 프로그래머들이 직접 구현해서 번거롭고 복잡했다.

  하지만 자바에서는 이러한 자료구조를 구현해 놓은 클래스들이 있다.

 

- 리스트 : ArrayList , LinkedList (Vector)

 

- 스택 : LinkedList (Stack)

 

- 큐 : LinkedList

 

- 해쉬 테이블 : HashMap (HashTable)

- 집합 : HashSet

 

 

 

#ArrayList

 

 

 

 

#LinkedList

 

- 기본적으로 사용하는 방법은 ArrayList와 동일하다. 하지만 내부적으로 일어나는

  현상은 전혀 다르다.

 

- 데이터들은 주소값으로 연결이 되어 있기 때문에 삽입,삭제는 ArrayList보다 효율적이나

  검색이 차례차례 돌아야 하므로 비효율적이다.

 

 

 

- Iterator : 검색의 효율성을 높이기 위해서 이전에 찾은 데이터의 위치를 기억하고 있다가

              다음에 그 위치를 활용하는 방법

 

 

- hasNext : 다음 데이터가 있는지 여부 확인 메소드

 

- next : 다음 데이터를 불러오는 메소드

 

 

 

#Stack & Que

 

- 스택 : 데이터를 넣은 순서와 꺼낸 순서가 밀접하게 연관된 자료구조 맨 마지막에 넣은 데이터가

           가장 먼저 나온다.

 

 

- 큐 : 먼저 넣은 데이터가 가장 먼저 나오는 구조

 

 

- ArrayList와 LinkedList로 스택,큐 구현해보기

 

 

 

 

#HashTable

 

- HashTable은 키(key)와 벨류(Value)로 데이터를 저장한다. 마치 전화번호부를 볼때 ㄱ,ㄴ,ㄷ 과 같은 기준으로

  데이터를 모아두면 나중에 불러오기 편하듯이 위치값이 아닌 특정키를 기준으로 데이터를 분류 저장할때

  사용하면 좋다.

 

- HashTable은 HashMap 클래스를 이용해 간편하게 사용가능하다.

 

 

#선언 및 데이터를 넣는방법

 

- <키의 데이터타입 , 벨류의 데이터타입>으로 선언

 

 

 

 

# Set

 

- 똑같은 값은 중복해서 저장하지 않는다.

 

- A라는 집합{a,b,c} 와 B라는 집합 {c,d} 가 있을때 A U B 합집합은 {a,b,c,d}가 된다.

  중복된 데이터를 허용하지 않음

 

- HashSet이라는 클래스를 이용해 간편하게 사용가능하다.

 

 

# HashSet

 

- 선언 및 데이터를 넣는 방법

 

 

 

- 저장된 값은 가져오는 방법 (Iterator 활용)

 

 

 

 

- HashSet의 데이터 수를 알고싶을 때에는 size 메소드를 사용하면 된다.

 

 

 

 

 

 

#ArrayList를 이용해 HashTable 구현 , HashSet을 이용해 랜덤숫자 뽑기 프로그램 만들어보기

 

 

 

 

 

 

 

 

'Java > Java2' 카테고리의 다른 글

Java [스레드(Thread),멀티 스레드]  (0) 2017.10.03
Java [Canvas,Swing]  (0) 2017.09.30
Java [예외처리,직렬화]  (0) 2017.09.18
Java [Object,Inner 클래스]  (0) 2017.09.16
Java [Gregorian Calendar,Math,Wrapper]  (0) 2017.09.14

*예외처리

 

- try , catch , flnally문

 

- try : 예외가 발생할 가능성이 있는 코드의 에러 감지

- catch : 에러 예외처리

- flnally : 에러 발생의 유무없이 반드시 실행한다. 

 

- 구조가 else if문과 같다.

 

 

 

 

 

* 직렬화

 

- 자바 프로그램에서는 모든 입출력 데이터를 스트림 형태로 주고 받는다.

 

- 객체를 파일에 저장할 때도 스트림으로 만드는 작업이 필요하여 이렇게 객체를

  스트림 형태로 만드는 작업을 직렬화라고 하며 스트림으로 부터 다시 객체를 만들어

  내는 작업을 역직렬화라고 한다.

 

- 직렬화가 가능한 클래스는 seializable 인터페이스를 구현하는 클래스이다.

 

- 직접 클래스를 선언할 때는 직렬화 기능 클래스로 만들기 위한 규칙과 방법을 고려해서

  만들어야 한다.

 

 

#GregorianCalendar 객체를 직렬화 해서 파일로 저장하는 코드

 

 

 

#역직렬화

 

- 파일로 저장된 객체를 역직렬화 해서 GregorianCelendar 객체로 불러오는 코드

 

 

 

- 직렬화는 Serializable 인터페이스를 구현해야 가능

 

 

 

#직렬화 규칙

 

- 생성자나 메소드는 직렬화 대상이 되지 않는다.

 

- 객체가 가지고 있는 필드만 직렬화 된다. 단 , static 키워드가 붙거나

  transient 키워드가 붙은 필드들은 직렬화가 되지 않는다.

 

 

 

#attachment 객체를 프로그램 실행 시 아예 오류를 발생시킨다.

 

 

 

#직렬화 이용해서 파일 저장법

 

 

 

 

 

 

 

 

 

# 작성자와 덧글 라벨을 만들고 텍스트로 글자를 입력받아 확인버튼을 누르면

  작성자 이름과 덧글이 저장되는 프로그램 만들기 단 , 프로그램을 종료해도 남겨진 작성자의

  이름과 덧글은 남아있어야한다.

 

 

'Java > Java2' 카테고리의 다른 글

Java [Canvas,Swing]  (0) 2017.09.30
Java [자료구조]  (0) 2017.09.24
Java [Object,Inner 클래스]  (0) 2017.09.16
Java [Gregorian Calendar,Math,Wrapper]  (0) 2017.09.14
Java [GUI 프로그램2]  (0) 2017.09.13

*Object 클래스

- 최상위 클래스로서 자바의 모든 클래스는 Object클래스를 상속하였다.

 

- 암묵적으로 Object클래스를 상속받기때문에 생략

 

- import를 사용하지 않은 주요 클래스들은 Object클래스를 상속받는다.

 

 

#Object 클래스의 주요 메소드

 

- clone : 객체 자신의 복사본을 반환

 

- equals : 객체 자신과 객체 obj가 같은 객체인지 알려준다.

 

- hashCode : 객체 자신의 해시 코드를 반환한다.

 

- toString : 객체 자신의 정보를 문자열로 반환한다.

 

 

#equals 활용

 

 

 

 

# 네스티드 클래스

 

- 클래스나 인터페이스 안에 클래스를 선언하거나 인터페이스를 선언한 형태

 

- 네스티드 클래스에는 정적 네스티드 클래스 , 이너클래스 , 로컬 이너클래스가 있다.

 

- 다른 클래스를 에워싼 클래스를 인클로징 클래스 라고 한다.

 

 

#이너 클래스

 

- 인클로징 타입의 메소드와 같은 수준으로 선언된 네스티드 클래스

 

 

 

- 인클로징 클래스 내에서 이너클래스 사용방법

 

 

 

- 인클로징 클래스 외부에서 이너 클래스 사용방법

 

 

 

 

#정적 네스티드 클래스

 

- 인클로징 타입의 메소드와 같은 수준으로 선언된 static 키워드를 갖는 네스티드 클래스

 

 

 

 

- 인클로징 클래스 외부에서 정적 네스티드 클래스 사용방법

 

 

 

- 정적 네스티드 클래스와 이너 클래스는 인터페이스 안에서도 선언할 수 있다.

 

- 구현한 클래스에서는 마치 본인의 네스티드 클래스 처럼 사용할 수 있다.

 

 

 

#로컬 이너 클래스

 

- 메소드 본체 안에서 선언된 네스티드 클래스

 

- 선언된 메소드 내부에서만 사용할 수 있으며 반드시 사용하는 부분 전에 선언이 되어야 한다.

 

 

 

- 이름 없는 로컬 이너 클래스 사용방법

 

 

 

- 서브 클래스의 객체를 딱 하나만 생성할 필요가 있는 경우에 사용할 수 있다.

 

- 인터페이스도 동일하게 이름이 없이 사용 가능하다.

 

 

 

#네스티드 인터페이스

 

- 정적 네스티드 인터페이스 한 종류만 있다

 

- 사용방법은 인터페이스와 비슷하다.

 

- 모아서 간단히 보기위함

 

 

 

 

#네스티드 클래스 사용방법들

 

 

'Java > Java2' 카테고리의 다른 글

Java [자료구조]  (0) 2017.09.24
Java [예외처리,직렬화]  (0) 2017.09.18
Java [Gregorian Calendar,Math,Wrapper]  (0) 2017.09.14
Java [GUI 프로그램2]  (0) 2017.09.13
Java [GUI 프로그램]  (0) 2017.09.12

* Gregorian Calendar

 

- 현재 운영체제에서 세팅된 시간을 가져온다.

 

- 타임존을 다르게 다르게 설정하여 서로 다른시간대를 가져올수있다.

  (TimeZone 클래스)

 

#캘린더 설정법

 

 

 

 

#TimeZone

 

 

 

#세계 시계만들기

 

- 각 숫자를 입력할 때 마다 서로 다른나라의  시간을 보여주는 프로그램을 만들자

  (최하 5개국의 시간을 보여준다.)

 

 

 

 #Math 클래스

 

- Math클래스는 수학에서 많이 사용되는 여러가지 함수들을 메소드로 제공하는 클래스

 

 

 

 

# Wrapper 클래스

 

- 자바의 데이터타입은 크게 프리미티브 타입과 레퍼런스 타입으로 나누어진다.

 

- 프리미티브 타입 : 수치 , 문자 , 논리값과 같은 간단한 데이터를 표현할 수 있는 타입

- 레퍼런스 타입 : 프리미티브 타입 외에 다른 타입

 

- Wrapper 클래스는 프리미티브 타입의 값을 담는 객체를 생성하는것 즉 프리미티브 타입의

  값을 감싸는 역할(wrap)을 하기 때문에 이런 클래스를 통틀어서 Wrapper Class 라고 부른다.

 

- 하나의 Wrapper 클래스에는 하나의 프리미티브 값을 담을 수 있으며 생성자 파라미터로

  값을 넘겨주어야 한다.

 

- Wrapper 객체가 생성되고 난 다음에 그 객체 안에 있는 값을 바꿀 수는 없다.

 

 

'Java > Java2' 카테고리의 다른 글

Java [자료구조]  (0) 2017.09.24
Java [예외처리,직렬화]  (0) 2017.09.18
Java [Object,Inner 클래스]  (0) 2017.09.16
Java [GUI 프로그램2]  (0) 2017.09.13
Java [GUI 프로그램]  (0) 2017.09.12

# GridBagLayout

 

- GridLayout을 일반화 한것이다. GridLayout의 경우는 각 격자들의 크기가 일정하기 때문에

  배치되는 컴포넌트들의 크기도 일정할 수 밖에 없다.

 

- GridBagLayout은 한 컴포넌트가 다수개의 격자를 차지할 수 있기 때문에 보다 다양한 형태로 

  만드는것이 가능하다. 

 

#주요 필드 정의

-> int gridX : 컴포넌트가 놓인 열의 위치

-> int girdY : 컴포넌트가 놓인 행의 위치 

-> int gridwidth : 컴포넌트가 차지하는 가로 넓이

-> int gridheight : 컴포넌트가 차지하는 세로 넓이

-> fill : 컴포넌트 확대하는 방법 가로,세로 가로-세로 채우기 방법이 있다.

-> double weightX : 가로 방향 여유 공간 채우는 방법

-> double weightY : 세로 방향 여유 공간 채우는 방법 

 

 

 

#Panel

- 레이아웃에 올릴때 패널을 이용하면 다양한 레이아웃을 편리하게 구성할 수 있다.

 

 

 

 

#Penel 연습 아무거나 입력값을 받으면 나타내기

 

 

 

 

#AWT 이벤트 리스너

 

- Window : WindowAdapter , WindowListener 

 

- Action : AcionListener

 

- Mouse : MouseListener , MouseAdapter

 

- Focus : FocusListener , FocusAdapter

 

- Item : ItemListener

 

- Key : KeyListener , KeyAdapter

 

 

#AWT - WindowEvent

 

 

 

#AWT - 사칙연산이 가능한 계산기 만들어보기

 

 

 

 

 

 

 

'Java > Java2' 카테고리의 다른 글

Java [자료구조]  (0) 2017.09.24
Java [예외처리,직렬화]  (0) 2017.09.18
Java [Object,Inner 클래스]  (0) 2017.09.16
Java [Gregorian Calendar,Math,Wrapper]  (0) 2017.09.14
Java [GUI 프로그램]  (0) 2017.09.12

*GUI 프로그래밍

- 텍스트 기반 운영체제가 아닌 그래픽을 이용하여 사용자와 프로그램간의

  상호작용을 할 수 있도록 해주는 인터페이스

 

- 이러한 그래픽 프로그래밍을 지원하기 위해 나온것이 AWT

 

#AWT (Abstract Window Toolkit)

- GUI 프로그래밍을 제작하기 위해 자바에서 제공하는 라이브러리를 모아놓은것

 

- 모든 GUI 프로그램에 사용되는 컴포넌트 및 툴킷을 제공하고 있으며 향후에는 JFC와 같은 스윙(swing)

  및 Java2D의 모태가 되는 개념이다.

 

- 운영체제와 응용프로그램 사이에 연결라이브러리

 

- 실행되는 운영체제에 따라 다르게 보이거나 동작방식에 차이가 있을수있다.

   이를 보완하기 위해 개발된것이 JFC (Java Foundation Classes)이다.

 

- Component : 다른 Component를 올릴 수 있는 Container를 포함한 각종 Container위에 올라갈 화면 구성

                    요소들이 포함되어 있다.

 

- Container : 창의 역할로서 한개 이상의 Container 위에 Button,TextField 같은 Component가 올라감으로서

                 화면이 구성된다.

 

- LayoutManager : Container 위에 Component들을 올릴때 자리 배치 방법

 

 

 

#AWT Frame

 

- Window 클래스의 하위 클래스로 일반적인 응용프로그램에서 윈도우를 생성하기 위해

  사용되는 클래스 다른 윈도우에 속해있지않은 윈도우로 최상위 레벨 윈도우라 한다.

 

- 상위 클래스인 Window 클래스는 타이틀,메뉴등이 지원되지 않기 때문에 일반적으로

  사용하지 않고 Frame 클래스를 사용한다.

 

- 기본적으로 경계선,타이틀,메뉴,최대화,최소화,종료 등의 기능을 제공한다.

 

- 최종적으로 화면에올릴 컴포넌트나 컨테이너를 적용한다.

 

 

#AWT Panel

 

- 실제로 구성되는 화면은 단순하지가 않는다 그래서 프레임에 올릴 때는 바로 올리지않고

  이 Panel에 올린 뒤에 프레임에 올린다.

 

- 보통은 그룹별로 묶어서 프레임에 붙이거나 다른Panel을 생성해서 자신에게 올리고 그것을 한번에

  프레임에 올리기도 한다.

 

 

#AWT Label

 

- 사각형 영역에 문자열을 표시할 때 사용하는 컴포넌트

 

- 경계선이 없고 문자열은 좌,우 중앙 정렬시킬 수 있다.

 

 

#AWT 기본 화면 구성

 

 

 

#Frame Setsize

 

 

 

 

#Frame에서 자주 사용하는 함수들

 

- setLocation (int left,int top) : 프레임의 화면상의 위치를 설정하는것

 -> 모니터 해상도를 가져오는 함수와 함께 사용하여 프레임의 위치를 설정할 때 자주 사용한다.

 

Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();

 

- setResizable(true) : 프레임의 크기를 조절을 가능하게 할것인지 여부

 

- getExtendedState: 프레임의 상태를 얻어온다.

-> MAXIMZED_HORIZ : 가로최대화

-> MAXIMZED_VERT : 세로최대화

-> MAXIMZED_BOTH : 둘다최대화

 

- getState : 프레임의 상태를 얻어옴

-> NORMAL : 윈도우가 기본 상태로 있음

-> ICONIFIED : 윈도우가 아이콘화 되어있음

 

 

#AWT - Layout Manager 

 

- 화면 분할을 담당하는 레이아웃

 

- FlowLayout , GridLayout , BorderLayout , CardLayout , GridBagLayout 등이 있다.

 

 

#AWT - FlowLayout

 

- 설정한 값에 따라 컴포넌트들이 왼쪽에서 오른쪽, 오른쪽에서 왼쪽 가운데에서 양쪽등으로

  정렬이 되는 레이아웃

 

 

 

 

#AWT - BorderLayout

 

- 컨테이너를 West,East,North,South,Center 모두 5개의 영역으로 나누고 각 영역에

  하나의 컴포넌트만 배치할 수 있는 레이아웃

 

- 컨테이너의 크기가 변경되면 위치는 고정이며 크기가 변한다.

  상,하 : 가로변경

  좌,우 : 세로변경

  가운데 : 가로,세로 변경

 

- 컴포넌트를 추가할 때 위치를 의미하는 텍스트와 같이 추가한다.

 

 

 

 

#AWT - GridLayout

 

- 행과 열을 만들어 컴포넌트들을 컨테이너 위에 순서대로 올린다.

 

- 컨테이너 크기가 변경되면 컴포넌트들의 위치는 고정 , 크기는 모두 동일한 크기로 변함

 

 

 

 

#그리드 뷰를 사용하여 달력 만들기

 

- 매달마다,주의 갯수가 다르고 토요일은 파랑색 일요일은 빨간색으로 표시

- 전달은 주말색깔에 상관없이 회색으로 표시

- 글자색을 바꾸는 메소드 setForeground(Color.Red) 같은 식으로 색을 찾아서 사용

 

 

'Java > Java2' 카테고리의 다른 글

Java [자료구조]  (0) 2017.09.24
Java [예외처리,직렬화]  (0) 2017.09.18
Java [Object,Inner 클래스]  (0) 2017.09.16
Java [Gregorian Calendar,Math,Wrapper]  (0) 2017.09.14
Java [GUI 프로그램2]  (0) 2017.09.13

+ Recent posts