如何在JavaFX中从主舞台调用第二个舞台

3

我是JavaFX的初学者,目前遇到了一个问题。我的做法如下:

我有一个主舞台,其中包含一个按钮。

btnShow.setOnAction(e->{

        String finalList="";
        for (int sub=0;sub<finalArrayList.size();sub++){
            Worker worker=finalArrayList.get(sub);
            finalList+=worker.getName()+"\t";
            finalList+=worker.getCity()+"\n";
        }
        StageTwo(finalList); 

    });

以下是我想从主舞台调用的另一个阶段。
public class StageTwo extends Stage {

    private TextArea txtDisp=new TextArea();
    private StackPane stack=new StackPane(txtDisp); 
    private Scene scene= new Scene(stack,700,300);

    public StageTwo(String finalList){

        txtDisp.setText(finalList);
        setTitle("Display Workers"); 
        setScene(scene); 
}

我不知道你所说的“调用舞台”是什么意思,但是调用构造函数需要使用new关键字,并且舞台不会自动显示。另外请考虑在循环中使用StringBuilder进行字符串连接,因为它不会为添加的每个部分创建一个新字符串。 - fabian
@fabian 怎么做呢..? - John Wang
1个回答

2

如果要从不同的阶段开始新的阶段,只需实例化阶段对象,然后调用show()方法。

因此,该代码如下:

  btnShow.setOnAction(e->{

    String finalList="";
    for (int sub=0;sub<finalArrayList.size();sub++){
        Worker worker=finalArrayList.get(sub);
        finalList+=worker.getName()+"\t";
        finalList+=worker.getCity()+"\n";
    }
    StageTwo(finalList); 

});

应该将代码更改为以下内容:
  btnShow.setOnAction(e->{

    String finalList="";
    for (int sub=0;sub<finalArrayList.size();sub++){
        Worker worker=finalArrayList.get(sub);
        finalList+=worker.getName()+"\t";
        finalList+=worker.getCity()+"\n";
    }
   //create a new instance and call the show method
   new StageTwo(finalList).show(); 

});

现在当按钮被点击时,将会显示StageTwo。

如果您想了解更多关于如何使用stages的内容,我建议阅读这篇文章:https://docs.oracle.com/javase/8/javafx/api/javafx/stage/Stage.html


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接