반응형

출처 : 이것이 자바다

17.1 JavaFX 개요

JavaFX는 크로스 플랫폼에서 실행하는 리치 클라이언트 애플리케이션을 개발하기 위한 그래픽과 미디어 패키지를 말한다.

JAVA 7부터 JDK에 포함되어 있기때문에 별도의 SDK 설치 없이도 바로 사용할 수 있다.

AWT  네이티브 UI컴포넌트를 이용해서 개발하였다.  

Swing 운영체제가 제공하는 네이티브 UI컴포넌트를 사용하지 말자는 것이다.

JavaFX 는 어도비의 플래쉬 와 마이크로소프트의 실버라이트의 대항마로 만들어졌다.

 

17.2 JavaFX 애플리케이션 개발 시작

17.2.1 메인 클래스

javafx.application.Application 을 상속받고 , start() 메소드 재정의

17.2.2 JavaFX라이프사이클

Application.launch()메소드부터 시작해서 

17.2.3 메인 클래스 실행 매개값 얻기

init() 메소드의 역할은 메인 클래스의 실행 매개값을 얻어 애플리케이션의 초기값으로 이용할 수 있도록 하는 것이다.

17.2.4 무대(Stage)와 장면(Scene)

 

17.3 JavaFX 레이아웃

17.3.1 프로그램적 레이아웃

자바 코드로 ui컨트롤을 배치하는 것을 말한다.

 

17.3.2 FXML레이아웃

XML기반의 마크업 언어로 , JavaFX 어플리케이션의 UI레이아웃 을 자바 코드에서 분리해서 태그로 선언하는 방법을 제공한다.

 

17.3.3 레이아웃 여백: 피딩과 마진

패딩은 안쪽 여백을 말하고 마진은 바깥 여백을 말한다.

17.3.4 FXML 작성 규칙

자바 코드로 변환되어 실행되기 때문에 자바 코드와 매핑 관계가 존재한다.

17.3.5 FXML 로딩과 Scene생성

 

17.3.6 JavaFX Scene Builder

 

17.4 JavaFX 컨테이너 

17.4.1 AnchorPane 컨테이너 

좌표를 이용하여 AnchorPane의 좌상단(0,0)을 기준으로 컨트롤을 배치한다.

17.4.2 HBox와 VBox 컨테이너 

수평과 수직으로 컨트롤을 배치하는 컨테이너이다.

17.4.3 BorderPane 컨테이너

top, bottom, left, right, center 셀에 컨트롤을 배치하는 컨테이너이다.

17.4.4 FlowPane 컨테이너

행으로 컨트롤을 배치하되 공간이 부족하면 새로운 행에 배치하는 컨테이너이다.

17.4.5 TilePane 컨테이너

그리드로 컨트롤을 배치하되 고정된 셀 (타일)크기를 갖는 컨테이너이다.

17.4.6 GridPane 컨테이너 

그리드로 컨트롤을 배치하되 셀의 크기가 고정적이지 않고 유동적인 컨테이너이다.

17.4.7 StackPane켄테이너 

StackPane은 컨트롤을 겹쳐 배치하는 컨테이너이다. 

 

17.5 JavaFX 이벤트 처리

17.5.1 이벤트 핸들러 

JavaFX 는 이벤트 발생 컨트롤과 이벤트 핸들러를 분리하는 위임형방식을 사용한다.

 

17.6 JavaFX 속성 감시와 바인딩

17.6.1 속성 감시

세가지 메소드

Getter

Setter

Property

17.6.2 속성 바인딩

17.6.3 Bindings클래스

두 속성이 항상 동일한 값과 타입을 가질 수 는 없다.

 

17.7 JavaFX 컨트롤

17.7.1 버튼 컨트롤

Button()

 

17.7.2 입력 컨트롤

TextField

 

17.7.3 뷰 컨트롤

ImageView컨트롤

ListView 컨트롤

TableView 컨트롤

17.7.4 미디어 컨트롤

17.7.5 차트 컨트롤

 

17.8 JavaFX메뉴바와 툴바

17.8.1 MenuBar 컨트롤

17.8.2 Toolbar 컨트롤

 

17.9 JavaFX 다이얼로그

17.9.1 FileChooser, DirectoryChooser

17.9.2 Popup

17.9.3 커스팀 다이얼로그

17.9.4 컨트롤러에서 primaryStage상요

메인 클레스에서 전달하는 방법

컨테이너 또는 컨트롤러부터 얻는 방법

 

17.10 JavaFX CSS스타일

모양 및 색상 등을 변경할 수 있다.

 

17.10.1 인라인 스타일

17.10.2 외부 CSS파일

선택자

CSS파일 적용

17.10.3 border 속성

17.10.4 background속성

배경 스타일 설정

17.10.5 font속성

17.10.6 shadow 효과

17.10.7 화면 스킨 입히기

 

17.11 JavaFX 스레드 동시성

17.11.1 Platform, runLater() 메소드

17.11.2 Task클래스

Task 생성

Task는 작업 스레드에서 실행되는 하나의 작업을 표현한 추상 클래스이다.

17.11.3 Service 클래스

작업 스레드상에서 tASK를 간편하게 시작 , 취소 , 재시작할 수 있는 기능을 제공한다.

 

17.12 화면 이동과 애니메이션

17.12.1 화면 이동

17.12.2 애니메이션

 

 

18. IO 기반 입출력 및 네트워킹

18.1 IO패키지 소개

프로그램에서는 데이터를 외부에서 읽고 다시 외부로 출력하는 작업이 빈번히 일어난다.

 

18.2 입력 스트림과 출력 스트림

InputStream, OutputStream()

 

18.2.1 InputStream

read()메소드

read(byte[] b)메소드

18.2.2 OutputStream

write(int b)

write(byte[] b)메소드

write(byte[] b, int off, int len)메소드

flush와 close()메소드

18.2.3 Reader 

read()메소드

read(char[] cbuf)메소드

read(char[] cbuf, int off, int len)메소드

close()메소드

18.2.4 Writer

 

18.3 콘솔 입출력

18.3.1 System.in필드

18.3.2 System.out필드

18.3.3 Console 클래스

18.3.4 Scanner 클래스

 

18.4 파일 입출력

18.4.1 File 클래스

18.4.2 FileInputStream

18.4.3 FileOutputStream

18.4.4 FileReader

18.4.5 FileWriter

 

18.5 보조 스트림

18.5.1 문자 변환 보조 스트림

18.5.2 성능 향상 보조 스트림

Buffer....

18.5.3 기본 타입 입출력 보조 스트림

18.5.4 프린터 보조 스트림

18.5.5 객체 입출력 보조 스트림

 

18.6 네트워크 기초

18.6.1 서버와 클라이언트

18.6.2 ip주소와 포트

ip주소는 네트워크 어댑터마다 할당되는데, 한 개의 컴퓨터에 두 개의 네트워크 어댑터가 장착되어 있다면, 두개의 ip주로슬 할당 할 수 있다.

18.6.3 InetAddress로 IP주소 얻기

InetAddress.getLocalHost();

 

18.7 TCP 네트워킹

tcp transmission control protocol는 연결 지향적 프로토콜이다.

단점 " 데이터를 보내기 전에 반드시 연결이 형성되어야 하고 (가장 시간이 많이 걸리는 작업), 고정된 통신 선로가 최단선(네트워크 길이 측면) 이 아닐 경우 상대적으로 udp(user datagram protocol)보다 데이터 전송 속도가 느릴 수 있다. 

 

18.7.1 ServerSocket과 Socket의 용도

서버가 실행되면 클라이언트는 서버가 ip주소와 바인딩 포트 번호로 Socket을 생성해서 연결 요청을 할 수있다.

18.7.2 ServerSocket 생성과 연결 수락

18.7.3 Socket 생성과 연결 요청

18.7.4 Socket데이터 통신

18.7.5 스레드 병렬 처리

18.7.6 채팅 서버 구현

18.7.7 채팅 클라이언트 구현

 

18.8 udp네트워킹

udp는 비연결 지향적 프로토콜이다.

비연결 지향적이란 데이터를 주고받을 때 연결 절차를 거치지 않고, 발신자가 일방적ㅇ로 데이터를 발신하는 방식이다.

18.8.1 발신자 구현

18.8.2 수신자 구현

 

반응형

' > 이것이 자바다' 카테고리의 다른 글

16. 스프림과 병렬 처리  (0) 2020.10.17
15. 컬렉션 프레임워크  (0) 2020.10.13
13. 제네릭 14. 람다식  (0) 2020.10.10
12. 멀티 스레드  (0) 2020.10.03
11. 기본 API 클래스  (0) 2020.10.02

+ Recent posts