JAVA chapter17. javaFX. 17.3 Java FX 레이아웃
JAVA/CONCEPT 2017. 12. 3. 10:47 |17.3 java FX 레이아웃
- Scene에는 다양한 컨트롤이 포함되는데 이를 배치하는 것이 레이아웃이다.
17.3.1 프로그램적 레이아웃
- 자바 코드로 UI 컨트롤을 배치하는 것을 말한다
- 자바 코드로만 개발하기 때문에 다른 언어를 익힐 필요가 없다
- 코드를 잘 정리 하지 않으면 난해한 프로그램이 될 확률이 높아진다
- 디자이너와 협력해서 개발하는 것이 어렵다
- 간단한 레이아웃 변경이나 스타일 변경이라도 자바 소스를 수정하고 재 컴파일해야 한다
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | package sec03.exam01_programmatical_layout; import javafx.application.Application; import javafx.stage.Stage; import javafx.scene.layout.HBox; import javafx.geometry.Insets; import javafx.scene.control.TextField; import javafx.scene.control.Button; import javafx.scene.Scene; import javafx.collections.ObservableList; public class AppMain extends Application { @Override public void start(Stage primaryStage) throws Exception { HBox hbox = new HBox();//HBox 컨테이너 생성 hbox.setPadding(new Insets(10,10,10,10));//안쪽 여백 설정 hbox.setSpacing(10);//컨트롤간의 수평 간격 설정 TextField textField = new TextField();//TextField 컨트롤 생성 textField.setPrefWidth(200);//TextField의 폭 설정 Button button = new Button();//Button 컨트롤 생성 button.setText("확인");//Button 글자 설정 ObservableList list = hbox.getChildren();//HBox의 ObservableList 얻기 list.add(textField);//TextField 컨트롤 배치 list.add(button); //Button의 컨트롤 배치 Scene scene = new Scene(hbox);//화면의 루트 컨테이너로 HBox 지정 primaryStage.setTitle("AppMain");//윈도우 창 제목 설정 primaryStage.setScene(scene);//윈도우 창에 화면 설정 primaryStage.show();//윈도우 창 보여주기 } public static void main(String[] args) { launch(args); } } | cs |
17.3.2 FXML 레이아웃
- FXML은 XML 기반의 마크업 언어이다.
- JavaFX UI 레이아웃을 자바 코드에서 분리해서 태그로 선언하는 방법을 제공한다.
- 웹 애플리케이션 및 안드로이드(Android) 앱을 개발하는 방법과 유사하다
- 디자이너와 협업이 가능한다
- 간단한 레이아웃 변경이나 스타일 변경시 자바 소스를 수정할 필요가 없다. FXML 태그만 수정하면 된다
- 레이아웃이 비슷한 장면(Scene)들간에 재사용이 가능하다
|
|
17.3.3 레이아웃 여백: 패딩(안쪽 여백)과 마진(바깥 여백)
// 패딩 설정 // 마진 설정 |
17.3.4 FXML 작성 규칙
- FXML 태그는 자바 코드로 변환되어 실행되기 때문에 자바 코드와 매핑 관계가 존재
- 맵핑 관계만 잘 이해하면 JavaFXAPI를 참조해서 FXML 태그를 쉽게 작성
* 패키지 선언
- FXML 태그의 이름은 하나의 JavaFX API 클래스 이름과 매핑되기 때문에 해당 클래스가 존재하는 패키지를 반드시
<?import?> 태그로 선언해야 한다
* 태그 선언
* 속성 선언
* 객체 선언
- <클래스 속성="값"/>
- <클래스 fx:value="값">
- <클래스 fx:constant="상수">
- <클래스 fx:factory="정적메소드">
17.3.5 FXML 로딩과 Scene 생성
17.3.6 JavaFX Scene Builder
- 드래그 앤 드롭 방식의 WYSIWYG 디자인 툴
- 자동으로 FXML 파일 생성
'JAVA > CONCEPT' 카테고리의 다른 글
공백 (0) | 2017.12.30 |
---|---|
JAVA chapter17. javaFX. 17.4 JavaFX 컨테이너 (0) | 2017.12.03 |
JAVA chapter17. JavaFX. 17.1 JavaFX 개요. 17.2 JavaFX 애플리케이션 개발 시작 (0) | 2017.12.03 |
JAVA chapter14. 람다식. 14.6 메소드 참조 // 추가하기 (0) | 2017.12.02 |
JAVA chapter14. 람다식. 14.5 표준 API의 함수적 인터페이스 (2) (0) | 2017.12.01 |