본문 바로가기
GUI( JavaFX Scene Builder )/Layout

Layout(Container) 예제

by pms93 2022. 8. 18.
package layouts;

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.ListView;
import javafx.scene.image.ImageView;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.FlowPane;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class Quiz4 extends Application {

	public static void main(String[] args) {
		launch(args);
	}
	
	@Override
	public void start(Stage primaryStage) throws Exception {
		BorderPane bp = new BorderPane();
		StackPane sp = new StackPane();
		ImageView iv = new ImageView("/img/images.jpg");
		
		
		// 상단
		FlowPane top = new FlowPane();
		top.setStyle("-fx-background-color : pink");
		top.getChildren().addAll(new Label("메뉴"), new Label("홈"), new Label("로그인"));
		top.setAlignment(Pos.CENTER);
		top.setPrefHeight(40);
		// Controll.USE_PREF_SIZE
		// - FlowPane과 같이 스테이지의 크기 변화에 따라 함께 반응하지 않고
		//   prefSize를 고정적인 크기로 갖게끔 할 수 있다.
//		top.setMaxWidth(Control.USE_PREF_SIZE);
		top.setHgap(100);
		bp.setTop(top);
		
		
		// 중단(좌)
		GridPane left = new GridPane();
		ListView<String> lv = new ListView<>();
		lv.getItems().addAll("아이템1", "아이템2", "아이템3");
		lv.setPrefSize(80, 100);
		left.getChildren().add(lv);
		left.setPrefWidth(115);
		bp.setLeft(left);
		
		
		// 중단(중)
		GridPane center = new GridPane();
		center.getChildren().add(new Button("내용 들어가는 곳"));
		center.setPrefWidth(100);
		bp.setCenter(center);
		
		
		// 중단(우)
		GridPane right = new GridPane();
		Button inputId = new Button("아이디 입력"), inputPw = new Button("비밀번호 입력"), login = new Button("로그인");
		inputId.setPrefSize(120, 20); inputPw.setPrefSize(120, 20); login.setPrefSize(95, 47);
		right.add(inputId, 0, 0);
		right.add(inputPw, 0, 1);
		right.add(login, 1, 0, 1, 2);
		right.setPrefWidth(200);
		right.setPadding(new Insets(20));
		bp.setRight(right);
		
		
		// 하단
		FlowPane bottom = new FlowPane();
		bottom.getChildren().add(new Button("바닥글 들어가는 곳"));
		bottom.setAlignment(Pos.CENTER);
		bottom.setPadding(new Insets(10));
		bp.setBottom(bottom);
		
		
		sp.getChildren().addAll(iv, bp);
		primaryStage.setScene(new Scene(sp, 500, 250));
		primaryStage.show();
	}

}

'GUI( JavaFX Scene Builder ) > Layout' 카테고리의 다른 글

HBox, VBox 병합 예제(2)  (0) 2022.08.17
HBox, VBox 병합 예제(1)  (0) 2022.08.17
ImageView  (0) 2022.08.16
StackPane  (0) 2022.08.16
VBox  (0) 2022.08.15