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();
}
}