JavaFX 2.0 подокно - PullRequest
       14

JavaFX 2.0 подокно

12 голосов
/ 03 апреля 2012

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

Спасибо за помощь.

Ответы [ 3 ]

17 голосов
/ 03 апреля 2012
new Stage(new Scene(new Group(new Text(10,10, "my second window")))).show();

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

13 голосов
/ 03 апреля 2012

Вы создаете новые окна, вызывая 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();
  }
}
0 голосов
/ 23 мая 2014

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

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

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

...