2014-01-12 60 views
4

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

我以前在Java中这样做,我会在按钮操作中创建类的对象,并使用对象的名称将新的JFrame设置为可见,但对主JFrame有模式。我在JavaFX中尝试了相同的方法,但它失败了。

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

P.S.我试图完成的不是在同一窗口中的多个屏幕。但不同的窗口(阶段),我不喜欢使用FXML文件,但使用NetBeans的Java文件。

任何帮助将不胜感激。

回答

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(); 
} 
-3

谢谢。在数周的FX工作之后,这对我来说是一个难题。 要执行:

public class Main extends Application { 
    @Override 
    public void start(Stage primaryStage) { 
      new FirstStage(); 
    } 
    public static void main(String[] args) { 
     launch(args); 
    } 
} 
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" /> 
+1

你可以添加一些上下文这个答案? –