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
階層は基づいています。
はこちらをご覧ください:
は事実上、経験則私の意見では、将来のです:あなたは別のを楽しみに行くことを計画している場合
の場所にプログラムの流れ(ログイン - >プロフィールなど)を入力してください - Stage
を変更してください。
あなたが同じ的環境(初めてのログイン - >複数の間違った試行後のログイン) - である場合Scene
を変更。ラムダについては
:Ahhmmm ...あなたのJava
/JavaFX
現在のバージョンでは、abillityを持っている場合 - 使用しない理由はありません。 Java 8のコントローラハンドラの詳細は、great tutorialを参照してください。
ありがとう!私はおそらく、私がJavaFXにもっと慣れているときにlambdasを始めて実装しているので、今は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