在JavaFX中创建多个阶段

时间:2014-01-12 11:12:41

标签: netbeans javafx

我正在尝试使用不同的类创建多个阶段,我可以通过单击按钮来启动另一个窗口,但是此窗口应该在不同的类中。

我曾经在Java中这样做,我将在buttons动作中创建类的对象,并使用对象的名称来设置新的JFrame可见,但是对于主JFrame是模态的。我在JavaFX中尝试过相同但它无法正常工作。

我有两个不同的类,两个都处于不同的阶段,但我不能用一个阶段来显示其他阶段。我只知道使用一个类,我会在动作处理程序方法中创建另一个阶段,但这会使代码变得非常冗长而且过于复杂。

P.S。我想要完成的不是同一个窗口中的多个屏幕。但不同的窗口(阶段),我不喜欢使用FXML文件,而是使用netbeans的java文件。

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:5)

因此,您希望每个类都成为舞台的子类。我会给你两个阶段,以及如何互相交流。

public class FirstStage extends Stage{
Button openOther = new Button("Open other Stage");
HBox x = new HBox();

FirstStage(){
    x.getChildren().add(openOther);
    this.setScene(new Scene(x, 300, 300));
    this.show();

    openOther.setOnAction(new EventHandler<ActionEvent>() {
        @Override
        public void handle(ActionEvent t) {
            new SecondStage();
        }//end action
    });
    }
}

对于第二阶段,

public class SecondStage extends Stage {
Label x = new Label("Second stage");
VBox y = new VBox();

SecondStage(){
    y.getChildren().add(x);
    this.setScene(new Scene(y, 300, 300));
    this.show();
   }    
}

从第一阶段的主要电话打来:

@Override
public void start(Stage primaryStage){
    new FirstClass();
}

答案 1 :(得分:0)

<AnchorPane prefHeight="200.0" prefWidth="200.0" />
<Button layoutX="264.0" layoutY="226.0" mnemonicParsing="false" text="Save" />
<Label layoutX="200.0" layoutY="144.0" text="Name" />
<Label layoutX="200.0" layoutY="192.0" text="Password" />
<TextField layoutX="264.0" layoutY="140.0" />
<TextField layoutX="264.0" layoutY="188.0" />

答案 2 :(得分:-3)

谢谢。在经过数周的外汇工作后,这对我来说是个难题。 执行:

public class Main extends Application {
    @Override
    public void start(Stage primaryStage) {
            new FirstStage();
    }
    public static void main(String[] args) {
        launch(args);
    }
}