Main은 size만 조정하겠습니다.
Scene scene = new Scene(root,200,200);
fxml을 열어 캡처와 같이 수정
BorderPane Center 위에 AnchorPane
그 위에 Button, Code 부분은 캡쳐와 같이 설정
그리고 나서 fxml을 이름만 custom으로 설정해 새로 만들어서
AnchorPane 위에
Button - Code : fx:id - closebtn
On Action - close
Label - Code : fx:id - label
위와 같이 추가하고 저장, 닫기 기능을 구현하기 때문에 Controller class 등록을 해준다.
이번에는 컨트롤러 클래스에서 방법 2를 이용해 스테이지를 불러오고
새로운 스테이지를 생성해서 그 위에 팝업을 띄우는 작업을 한다.
package app;
import java.io.IOException;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.stage.Modality;
import javafx.stage.Stage;
import javafx.stage.StageStyle;
public class MainController {
@FXML private Button btn;
@FXML private Button closebtn;
@FXML private Label label;
private Stage pop; // 스테이지가 들어갈 변수
public void popup() {
// 메인 스테이지 취득, 전의 두가지 방법 중 두번째 방법
Stage mainStage = (Stage)btn.getScene().getWindow();
// 새로운 스테이지 생성 (옵션 추가, 스타일)
Stage pop = new Stage(StageStyle.DECORATED); // 스테이지 옵션
pop.initModality(Modality.WINDOW_MODAL); // 그 위에 뜨는 모달의 옵션
pop.initOwner(mainStage); // 메인 스테이지 부여
try {
// 새로운 스테이지에 custom 레이아웃 불러오기
Parent root = FXMLLoader.load(getClass().getResource("custom.fxml"));
// 씬에 추가
Scene sc = new Scene(root);
pop.setScene(sc);
pop.setTitle("팝업 띄우기");
pop.setResizable(false); // 창 사이즈 조절 차단
// 보여주기
pop.show();
} catch (IOException e) {
e.printStackTrace();
}
}
public void close() { // 현재의 스테이지를 받아서 close를 해주어야 함
pop = (Stage)closebtn.getScene().getWindow(); // 버튼을 통해서 현재 스테이지를 알아냄
pop.close();
}
}
'JavaFX > 01.Node 추가' 카테고리의 다른 글
| [JAVA FX]01-19.Stage를 Static을 통해 공유, 레이아웃 겹치기 (1) | 2018.09.12 |
|---|---|
| [JAVA FX]01-18.여러가지 레이아웃 전환 방법 (2) | 2018.09.12 |
| [JAVA FX]01-16.Popup 띄우기 (방법 1,2) (0) | 2018.09.12 |
| [JAVA FX]01-15.AudioPlayer (0) | 2018.09.12 |
| [JAVA FX]01-14.Media Player (0) | 2018.09.11 |