UI 화면을 login.fxml
에서 home.fxml
으로 변경하고 싶습니다.JavaFX : UI 화면 간 이동을위한 우수 사례
Stage
또는 Scene
을 변경해야합니까? 가장 좋은 방법이 무엇인지 모르겠습니다. 또한 컨트롤러의 핸들러에 람다 식을 사용할 수 있습니까?
UI 화면을 login.fxml
에서 home.fxml
으로 변경하고 싶습니다.JavaFX : UI 화면 간 이동을위한 우수 사례
Stage
또는 Scene
을 변경해야합니까? 가장 좋은 방법이 무엇인지 모르겠습니다. 또한 컨트롤러의 핸들러에 람다 식을 사용할 수 있습니까?
먼저 Stage
.vs로 시작해 보겠습니다. Scene
문제 : ->Scene
->Nodes
(등) Stage
: 알려진
는 JavaFX
계층 구조를 기반으로합니다.
는 여기를 참조하십시오 :
이 실질적으로 말하면, A는 어림 내 의견으로는 미래입니다 : 다른에 향후 계획이라면
프로그램의 흐름에서을 입력하십시오 (예 : 로그인 -> 프로파일). Stage
을 변경하십시오. 같은 환경에있는 경우
는 (처음으로 로그인 -> 여러 잘못된 시도 후 로그인 참조) - Scene
을 변경합니다. 람다에 관해서는
는 : 현재 Java
/JavaFX
버전의 abillity가있는 경우 Ahhmmm ... - 사용하지 않을 이유가 없다. Java 8의 컨트롤러 처리기에 대한 자세한 내용은 great tutorial을 참조하십시오.
감사합니다. 나중에 JavaFX에 익숙해지면 나중에 람다를 시작하고 구현할 때 Old-School 버전을 사용하도록 할 것입니다. –
내가 JavaFX
에서 변화하는 장면이 방법을 사용
/**
* Controller class for menuFrame.fxml
*/
public class MenuFrameControl implements Initializable {
@FXML private Button sceneButton1;
@FXML private Button sceneButton2;
@FXML private Button sceneButton3;
/**
* Event handling method, loads new scene from .fxml file
* according to clicked button and initialize all components.
* @param event
* @throws IOException
*/
@FXML
private void handleMenuButtonAction (ActionEvent event) throws IOException {
Stage stage = null;
Parent myNewScene = null;
if (event.getSource() == sceneButton1){
stage = (Stage) sceneButton1.getScene().getWindow();
myNewScene = FXMLLoader.load(getClass().getResource("/mvc/view/scene1.fxml"));
} else if (event.getSource() == sceneButton2){
stage = (Stage) flightBtn.getScene().getWindow();
myNewScene = FXMLLoader.load(getClass().getResource("/mvc/view/scene2.fxml"));
} else if (event.getSource() == sceneButton3) {
stage=(Stage) staffBtn.getScene().getWindow();
myNewScene = FXMLLoader.load(getClass().getResource("/mvc/view/scene3.fxml"));
}
Scene scene = new Scene(myNewScene);
stage.setScene(scene);
stage.setTitle("My New Scene");
stage.show();
}
@Override
public void initialize(URL location, ResourceBundle resources) { }
그래서 기본적으로이 버튼을 클릭하면, 그것은 stage
변수에 Stage
객체를 표시 실제로 저장합니다. 그런 다음 Scene
개체를 .fxml 파일에서 myNewScene
변수로로드 한 다음 새로로드 된 Scene
개체를 저장된 Stage
개체에 넣습니다.
이 코드를 사용하면 하나의 Stage
개체를 사용하여 각 단추가 다른 장면으로 전환되는 기본 3 개의 단추 메뉴를 만들 수 있습니다.
[MCVE]를 게시하십시오. – DavidS
지금까지 시도한 것을 알고 싶기 때문에 문제를 보여주는 예제를 요청했습니다. 이것은 몇 가지 소개 자습서를 통해 자신이 대답 할 수 있거나 자신의 입장에서 약간의 문제를 제기 할 수있는 질문입니다. – DavidS