JavaFX 참고 사항

3612 단어

스타터 템플릿



  • 신청

  • //MainWindow.java
    import javafx.application.Application;
    import javafx.fxml.FXMLLoader;
    import javafx.scene.Parent;
    import javafx.scene.Scene;
    import javafx.stage.Stage;
    
    public class MainWindow extends Application {
    
        @Override
        public void start(Stage primaryStage) throws Exception {
            Parent root = FXMLLoader.load(getClass().getResource("main.fxml"));
            primaryStage.setTitle("Hello World");
            primaryStage.setScene(new Scene(root, 500, 420));
            primaryStage.show();
        }
    
    
        public static void main(String[] args) {
            launch(args);
        }
    }
    

  • 컨트롤러

  • //MainController.java
    public class MainController implements Initializable {
        @FXML
        private Label label1;
    
        @Override
        public void initialize(URL location, ResourceBundle resources) {
        }
    }
    

  • fxml과 컨트롤러의 바인딩이 fxml 파일에서 완료되고 레이아웃의 루트 요소 속성 아래에 배치됩니다. 디버깅할 때 확인에 주의하십시오
  • .

    fx:controller="MainController"
    

    데이터 상호 작용



  • 응용 프로그램의 컨트롤러에서 메서드 호출

  • public class MainWindow extends Application{
        @Override
        public void start(Stage primaryStage) throws Exception { 
            //必须采用动态创建root的方式
            FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("main.fxml"));
            Parent root = fxmlLoader.load();
            //获取Controller对象
            MainController controller = fxmlLoader.getController();
            //调用controller的方法        
            controller.function();
        }
    }
    

  • 컨트롤러에서 응용 프로그램의 Stage 개체를 얻습니다
  • .

    public class MainController implements Initializable {
        @FXML
        private FlowPane rootLayout; //此处的类型为fxml布局的根元素的类型
    
        private Stage getStage() {
            //获取stage的方式
            Stage stage = (Stage) rootLayout.getScene().getWindow();
            return stage;
        }
    }
    

    이상적인 사용자 정의 하위 양식 작성 방법


    또한 새로운 폼에 대한 Application 클래스, Controller 클래스, fxml 파일을 생성하고, 파일의 원래 구조를 확인하고, 하위 폼의 생성자에서 폼을 생성하는 메소드를 호출하고, 폼이 모달인지 여부를 설정할 수 있습니다. 그런 다음 양식을 만들고자 하는 위치에 새 양식 개체를 만듭니다.
    public class SubWindow extends Application {
        @Override
        public void start(Stage primaryStage) throws Exception {
            Parent root = FXMLLoader.load(getClass().getResource("sub.fxml"));
            primaryStage.setTitle("Hello World");
            primaryStage.setScene(new Scene(root, 500, 420));
            primaryStage.show();
        }
        public SubWindow(){
            Stage stage = new Stage();
            stage.initModality(Modality.APPLICATION_MODAL);//模态窗体
            //非模态对应 Modality.NONE
            this.start(stage);
        }
    }
    
    new SubWindow(); //调用构造函数创建子窗体
    

    내장 대화 상자



  • 경고

  • Alert alert = new Alert(Alert.AlertType.NONE, "hello", ButtonType.OK, ButtonType.CANCEL);
    alert.setTitle("Hello");
    Optional r = alert.showAndWait(); 
    if (r.get()==ButtonType.OK){ //获取返回值的方式
        //...
    } 
    

  • 파일 선택기

  • FileChooser fileChooser = new FileChooser();
    fileChooser.setTitle("open pics");
    fileChooser.getExtensionFilters().addAll(
        new FileChooser.ExtensionFilter("img", "*.jpg;*.png"),
        new FileChooser.ExtensionFilter("gif", "*.gif")
    );
    Stage stage = (Stage) rootLayout.getScene().getWindow();
    File file = fileChooser.showOpenDialog(stage);
    

  • 추가 예정
  • 좋은 웹페이지 즐겨찾기