Javafx 는 fxml 방식 으로 대화 상 자 를 추가 합 니 다.

2047 단어 JavaFx
참고 하 는 이 사이트 의 방법http://statsciolist.blogspot.com/2013/04/javafx-modal-dialog-with-controller.html
  • main 함수 에 Controller 의 대상 을 만 들 고 Controller 에 Stage 를 추가 하 는 방법 을 만 듭 니 다.
  • 새 대화 상자 fxml 파일 을 만 드 는 것 은 주 fxml 의 만 드 는 방법 과 같 습 니 다.
    public class Main extends Application {
    	@Override
    	public void start(Stage primaryStage) {
    		try {
    			
    			/*Parent root = FXMLLoader.load(getClass().getResource("study.fxml"));
    			Scene scene = new Scene(root, 1000, 600);
    			primaryStage.initStyle(StageStyle.DECORATED);
    			primaryStage.setScene(scene);
    			primaryStage.setTitle("Stony Brook Health");
    			primaryStage.show();	*/
    			
    			FXMLLoader loader = new FXMLLoader();
    			loader.setLocation(getClass().getResource("study.fxml"));
    			loader.load();
    			Parent root = loader.getRoot();
    			//       ,         Stage  
    			Controller c =(Controller)loader.getController();
    			c.setStage(primaryStage);
    			
    			Scene scene = new Scene(root,1000,600);
    			primaryStage.setScene(scene);
    			primaryStage.show();
    			
    			
    		} catch(Exception e) {
    			e.printStackTrace();
    		}
    		
    		
    	}
    	
    	public static void main(String[] args) {
    		launch(args);
    	}
    }
    

    이 main 함수 의 코드 는 Stage 대상 을 가 져 와 Controller 에 전달 하 는 데 중점 을 둡 니 다.대화 상자 에 대화 상 자 를 다시 만 들 려 면 계속 끼 워 넣 으 십시오.
    public Stage primaryStage;//  Stage  
        {
            FXMLLoader loader = new FXMLLoader();
            //Dialog.fxml     fxml  
    		loader.setLocation(getClass().getResource("Dialog.fxml"));
    		try {
    			loader.load();
    		} catch (IOException e1) {
    			// TODO Auto-generated catch block
    			e1.printStackTrace();
    		}
    		Parent root = loader.getRoot();
    		
    		Stage modal_dialog = new Stage(StageStyle.DECORATED);
    		modal_dialog.initModality(Modality.WINDOW_MODAL);
    		//            。     
    		modal_dialog.initOwner(primaryStage);
    		Scene scene = new Scene(root);
    		
    		modal_dialog.setScene(scene);
    		modal_dialog.show();
    	}
    	//       primaryStage       
    	public void setStage(Stage temp)
    	{
    		primaryStage = temp;
    	}
    

  • 좋은 웹페이지 즐겨찾기