私は地元の大学で「Java 101」クラスを完成させ、初心者のJavaプログラマーです。私はまた、Java FXを含む、いくつかの余分なトピックについて学びたいと思っています。私は、OracleのWebサイトでJava FXのチュートリアルを勉強し、いくつかのYouTubeビデオを見たり、 "Java FX for Dummies"(これは初心者のために見つけた最高の本でした)を読みました。たくさんの基本がありますが、比較的シンプルなものが私を逃してしまいます。2つの異なるJava FXシーンを2つの別々のクラスとして記述できますか?
たとえば、1つのステージで複数のシーンを使用するJava FXプログラムがあるとします。ユーザーが「スイッチ!」ボタンをクリックすると、ボタンを押すと、2番目のシーンが最初のシーンにスワップアウトされます。簡単です。 1つの.javaファイルでこれをすべて実行できますが、問題はありません。 (下のコードを参照してください)
しかし、私の.javaクラスファイルは、トラブルシューティングに本当に長くなって厄介です。 1つのシーンを1つの.javaファイル内の1つのクラスとして定義/宣言/初期化でき、2つ目のシーンを別の.javaファイルの別のクラスとして定義/宣言/これにより、各シーンのコンポーネントをずっと簡単に追跡できるようになります。問題は、私はこれを行う方法を理解できないということです。
Scene1.javaクラスを作成してからScene2.javaクラスを作成し、シーンを切り替えるときに2つのステージオブジェクトを渡すだけでいいと思います。しかし、私はこれがどのように行われたかの例を見つけることができず、すべての試みがコンパイラエラーや本当に恐ろしいランタイムエラーに繋がります。
これはどのように行うことができますか?もしそうなら、以下のSwitchScenes2()
メソッドを変更して新しいScene2
オブジェクトを作成し、それをステージに渡すにはどうしなければなりませんか?
ありがとうございます! RAO
/*
JavaFXExample.java
*/
import javafx.application.*;
import javafx.stage.*;
import javafx.scene.*;
import javafx.scene.layout.*;
import javafx.scene.control.*;
import javafx.event.*;
import javafx.geometry.*;
public class JavaFXExample extends Application{
public static void main(String[] args){
launch(args);
}
Button btnSw1;
Button btnSw2;
Button btnClose;
HBox hbox1;
VBox vbox1;
Scene scene1;
Scene scene2;
Stage stage;
@Override public void start(Stage primaryStage){
btnSw1 = new Button("Switch Scenes!");
btnSw1.setOnAction(
e -> SwitchScenes2());
btnSw2 = new Button("Switch back!");
btnSw2.setOnAction(
e -> SwitchScenes1());
btnClose = new Button();
btnClose.setText("Close me!");
btnClose.setOnAction(e -> CloseWindowClick());
hbox1 = new HBox(10);
hbox1.getChildren().addAll(btnSw1);
vbox1 = new VBox(10);
vbox1.getChildren().addAll(btnSw2, btnClose);
scene1 = new Scene(hbox1, 300, 300);
scene2 = new Scene(vbox1, 200, 400);
stage = primaryStage;
stage.setScene(scene1);
stage.setTitle("Example App");
stage.show();
}
public void SwitchScenes1(){
stage.setScene(scene1);
}
public void SwitchScenes2(){
stage.setScene(scene2);
}
public void CloseWindowClick(){
stage.close();
}
}
関連する質問:http://stackoverflow.com/questions/32464698/java-how-do-i-start-a-standalone-application-from-the-current-one-when-both ~are –