1

私は気が狂っている学校の課題を手に入れました。ウェブを検索しているときに探している答えを見つけることができるので、これについてアドバイスをいただければ幸いです。

割り当ては、「Hello World」と言う基本的な JavaFX アプリケーションを作成することですが、helloMain.java と、BorderPane を拡張するクラス HelloWorld.java を含める必要があります。helloMain を使用するだけで割り当てを解決しましたが、コードの一部 (ルート ノードとそれに含まれるすべて) を HelloWorld.java に移動しようとすると、アプリケーションを実行したときにシーンが読み込まれないようです (空の窓)。だから明らかに私は何か間違ったことをしたのですが、何が悪いのかわかりません。

helloJavaで次のコードを取得しました(これは正しいと確信しています)

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class helloWorldMain extends Application {

    @Override
    public void start(Stage primaryStage) {
        HelloWorld helloWorld = new HelloWorld();
        Scene scene = new Scene(helloWorld, 300, 300);
        primaryStage.setTitle("Hello World");
        primaryStage.setScene(scene);
        primaryStage.show();
        }

    public static void main(String[] args) {
        launch(args);

    }

}

そして、私の HelloWorld.java で、このコードを取得しました

public class HelloWorld extends BorderPane {

public HeloWorld() {
    final Text text = new Text(0, 130, "Hello World");
    Pane txtPane = new Pane();
    Pane txtPane2 = new Pane();         

    VBox root = new VBox();
    txtPane.getChildren().add(text);
    txtPane2.getChildren().add(text);

    root.getChildren().addAll(txtPane, txtPane2);

}

}

自分が何をしているのか本当にわからないと言っても過言ではありませんが、学ぼうとしています。

  1. HelloWorld クラスで何が欠けていますか? それはコンストラクターの何かですか?または、ある種のフィールドを使用する必要がありますか?それとも何か他のものですか?
  2. この問題を解決するために何時間も検索してきましたが、私がやろうとしていることに関連する検索結果が見つかりません..「このアプローチ」についてどこで読むことができますかおそらくなぜ何も見つからなかったのでしょう)独自のクラスを作成してメインで使用しようとしたときはどうですか?

これを理解するのを手伝ってくれる人へのたくさんのコード愛:)

4

1 に答える 1

3

どこにも追加しないs に s を追加HelloWorldするので、それらは「空中にぶら下がっています」。NodeVBox

この行を HelloWorld のコンストラクターの最後に追加します...

getChildren().add(root);

...そして完了です。

于 2016-04-08T09:05:08.867 に答える