Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javafx跨屏幕从标签传输文本_Java_Javafx - Fatal编程技术网

javafx跨屏幕从标签传输文本

javafx跨屏幕从标签传输文本,java,javafx,Java,Javafx,我已经搜索过了,我相信其他人也有这个问题。许多帖子都没有得到回复或被否决,甚至我自己的帖子也没有给出解决方案。我想知道如何在类之间传输标签数据。例如,假设我有以下内容: 头等舱: Label lab; public void setText() { lab.setText("hello"); } public String getText() { return lab.getText(); } public void switchScene(ActionEvent event) th

我已经搜索过了,我相信其他人也有这个问题。许多帖子都没有得到回复或被否决,甚至我自己的帖子也没有给出解决方案。我想知道如何在类之间传输标签数据。例如,假设我有以下内容:

头等舱:

Label lab;
public void setText() {
   lab.setText("hello");
}
public String getText() {
   return lab.getText();
}
public void switchScene(ActionEvent event) throws IOException {
//code to switch scenes when button pressed
setText(); //this is also called when button pressed

}
中产阶级:

public void switchScenes(ActionEvent event) throws IOException {
    FirstScreenController p = new FirstScreenController();
    n.displayAmt(p.getText()); //get text from first scene's label
}
目标类别:

Label otherLab;
public void displayAmt(String amt) {
    otherLab.setText(amt); //set text from first scene's label to this label
}
假设中间类方法设置为按钮。单击按钮后,随着程序切换场景,一切似乎都正常工作。但是,目标类中的otherLab为空。第一个类中标签的文本传输到目标类中的标签失败


如何着手解决这个问题?我知道java是按值传递的,所以第一个标签不会携带函数所做的更改。如何克服这一问题

> P>在每次切换场景时,您将创建一个带有空标签的新控制器对象,因此中间类中的GETTEX返回空行。
FirstScreenController p = new FirstScreenController();

为什么需要标签文本?这不是用户输入或类似的内容,标签只是一个标签,固定文本,如果您在第二个屏幕中需要标签,请创建一个新的标签。如果您的问题是:如何在场景之间共享参数取决于具体情况,您可以从文件或类似文件中读取,但是,如果您试图这样做,您的问题是如何在类之间共享信息,这与javafx无关。

正如第一个答案所建议的,您正在创建一个新对象,因此getText方法将返回null; 您可以使用java.io包的writer和reader类。 get文本可以包含将文本存储在具有编写器的文件中的代码,并且目标类可以通过读取器从该文件中读取。 这不应该是一个昂贵的程序

io的一个好链接: 如果是jsp,您可以获取参数,但这些值是运行时的,您需要持久化它们。
序列化也是一种选择

不建议你做那样的事。简单地说,将
标签的
数据传递给新的控制器,并使用该数据创建一个新的
标签
。我尝试了,但它给了我一个NullPointerException。我只是无法克服传递值,因为java没有传递引用。如果你想知道如何在控制器之间传递信息,那就去吧。这个例子传递了
HostService
,但想法是一样的。我想从标签中获取数据(由用户输入设置)这是我的主要问题,但被否决了,被忽略了。实际上,我确实有用户输入,我想在标签之间传输。是的,创建新实例时不进行更改是有道理的。谢谢。我似乎无法将标签文本保存到任何地方。它只是将其保存为null。当我使用用户输入为标签设置一个值时,它会在屏幕上显示它。当我试图获取文本时,它不起作用。这些都是头等舱的。