我正在尝试使用不同的类创建多个阶段,我可以通过单击按钮来启动另一个窗口,但是此窗口应该在不同的类中。
我曾经在Java中这样做,我将在buttons动作中创建类的对象,并使用对象的名称来设置新的JFrame可见,但是对于主JFrame是模态的。我在JavaFX中尝试过相同但它无法正常工作。
我有两个不同的类,两个都处于不同的阶段,但我不能用一个阶段来显示其他阶段。我只知道使用一个类,我会在动作处理程序方法中创建另一个阶段,但这会使代码变得非常冗长而且过于复杂。
P.S。我想要完成的不是同一个窗口中的多个屏幕。但不同的窗口(阶段),我不喜欢使用FXML文件,而是使用netbeans的java文件。
非常感谢任何帮助。
答案 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);
}
}