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。当我使用用户输入为标签设置一个值时,它会在屏幕上显示它。当我试图获取文本时,它不起作用。这些都是头等舱的。