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 |