Подтвердить что ты не робот

Subwindow JavaFX 2.0

Как я могу отобразить новое окно в JavaFX 2.0? Например, после нажатия кнопки click. Я хочу, чтобы оба окна (главное окно и новое окно) обменивались друг с другом.

спасибо для справки.

4b9b3361

Ответ 1

new Stage(new Scene(new Group(new Text(10,10, "my second window")))).show();

Общение между двумя окнами аналогично двум любым объектам в Java.

Ответ 2

Вы создаете новые окна, вызывая new Stage() и отображая их stage.show().

Вот пример создания нового этапа с элементом управления флажком, который изменяет текст метки, отображаемой на другой сцене.

import javafx.application.Application;
import javafx.beans.value.*;
import javafx.event.EventHandler;
import javafx.scene.*;
import javafx.scene.control.*;
import javafx.scene.layout.StackPane;
import javafx.stage.*;

public class SecondStage extends Application {
  public static void main(String[] args) { launch(args); }
  @Override public void start(Stage primaryStage) {
    // setup some dymamic data to display.
    final String STANDARD_TEXT  = "Every Good Boy Deserves Fruit";
    final String ALTERNATE_TEXT = "Good Boys Deserve Fruit Always";        
    final Label label = new Label(STANDARD_TEXT);

    // configure the primary stage.
    StackPane primaryLayout = new StackPane();
    primaryLayout.getChildren().add(label);
    primaryLayout.setStyle("-fx-background-color: lightgreen; -fx-padding: 10;");
    primaryStage.setScene(new Scene(primaryLayout, 200, 100));
    primaryStage.setTitle("Primary Stage");

    // configure the secondary stage.
    final Stage secondaryStage = new Stage(StageStyle.UTILITY);
    CheckBox alternateTextCheck = new CheckBox("Show alternate text");
    alternateTextCheck.selectedProperty().addListener(new ChangeListener<Boolean>() {
      @Override public void changed(ObservableValue<? extends Boolean> selected, Boolean oldValue, Boolean newValue) {
        if (newValue) label.setText(ALTERNATE_TEXT); else label.setText(STANDARD_TEXT);
      }
    });
    StackPane secondaryLayout = new StackPane();
    secondaryLayout.getChildren().add(alternateTextCheck);
    secondaryLayout.setStyle("-fx-background-color: cornsilk; -fx-padding: 10;");
    secondaryStage.setScene(new Scene(secondaryLayout, 200, 100));
    secondaryStage.setTitle("Secondary Stage");

    // specify stage locations. 
    secondaryStage.setX(400); secondaryStage.setY(200);
    primaryStage.setX(400);   primaryStage.setY(350);

    // add a trigger to hide the secondary stage when the primary stage is hidden.
    // this will cause all stages to be hidden (which will cause the app to terminate).
    primaryStage.setOnHidden(new EventHandler<WindowEvent>() {
      @Override public void handle(WindowEvent onClosing) {
        secondaryStage.hide();
      }
    });

    // show both stages.
    primaryStage.show();
    secondaryStage.show();
  }
}

Ответ 3

Внутри действия нажатия кнопки вы можете создать новое satge, а затем объект другого класса, который вы хотите отобразить. после этого вызовите метод start с помощью созданного объекта.

      Stage stage= new Stage();
      NewClass nc= new NewClass();
      nc.start(stage);

надеюсь, что это сработает!!!