java javafx跨屏幕从标签传输文本
我已经搜索过了,我相信其他人也有这个问题。许多帖子都没有得到回复或被否决,甚至我自己的帖子也没有给出解决方案。我想知道如何在类之间传输标签数据。例如,假设我有以下内容:
头等舱:
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是按值传递的,所以第一个标签不会携带函数所做的更改。如何克服这一问题
# 1 楼答案
正如第一个答案所建议的,您正在创建一个新对象,因此getText方法将返回null; 您可以使用java的writer和reader类。io包。 get文本可以包含将文本存储在具有编写器的文件中的代码,并且目标类可以通过读取器从该文件中读取。 这不应该是一个昂贵的程序
io的一个好链接: https://www.tutorialspoint.com/java/io/index.htm 如果是jsp,您可以获取参数,但这些值是运行时的,您需要持久化它们。 序列化也是一种选择
# 2 楼答案
每一次切换场景时,你都在创建一个带有空标签的新控制器对象,这样中间类中的GETTeX返回空行。p>
为什么需要标签文本?这不是用户输入或类似的内容,标签只是一个标签,固定文本,如果您需要在第二个屏幕中创建一个新的标签。如果您的问题是:如何在场景之间共享参数,这取决于不同的情况,您可以从文件或类似的东西中读取,但如果您试图这样做,您的问题是如何在类之间共享信息,而不是javafx