7

をクリックしたときにPanel同じように追加のオプションを表示する必要がありますが、この動作を実現する方法がわかりません。パネルをルートに追加するとサイズが変更されない問題。SceneButtonStageVBox

問題を示すために簡単なコードを書きました。

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class Main extends Application {
   public static void main(String[] args) {
       launch(args);
   }

   public void start(Stage stage) throws Exception {
       final VBox root = new VBox();
       Button button = new Button("add label");
       root.getChildren().add(button);

       button.setOnAction(new EventHandler<ActionEvent>() {
           public void handle(ActionEvent event) {
               root.getChildren().add(new Label("hello"));
           }
       });

       stage.setScene(new Scene(root));
       stage.show();
   }
}

レイアウトを行うようにルート コンテナに通知するメソッドを呼び出す必要があると思いますが、試したすべてのメソッドで望ましい結果が得られませんでした。

4

2 に答える 2

28

プログラム作品

プログラムはほぼ期待どおりに動作しています (「ラベルを追加」ボタンをクリックすると、新しいラベルがシーンに追加されます)。

なぜあなたはそれが働いているのを見ることができないのですか

シーンの初期コンテンツに合わせてデフォルトでステージのサイズが変更されるため、新しく追加されたラベルは表示されません。シーンにエリアを追加しても、新しいエリアを含むようにステージのサイズが自動的に変更されることはありません。

それが機能することを確認するために何をすべきか

ラベルを追加した後、ステージ ウィンドウのサイズを手動で変更します。

また

新しく追加されたラベルが見えるように、シーンの初期サイズを設定します。

stage.setScene(new Scene(root, 200, 300));

また

新しいラベルを追加するたびに、シーンに合わせてステージのサイズを調整します。

stage.sizeToScene();
于 2013-10-30T09:22:11.493 に答える