有几个其他线程有类似的问题,但我尝试了在这些答案中给出的代码,但到目前为止我没有成功。我将提供我的代码的显着部分。我有两个FXML文件LoginFXML
和DockFXML
和一个TextField tfUsername
。我想将用户在tfUsername
中输入的输入作为String
从LoginFXML
传递到DockFXML
。从TextField获取用户输入从一个FXML文件到另一个
我将在下面的示例中删除不必要的代码。
LoginFXMLController
public class LoginFXMLController implements Initializable {
@FXML
private TextField tfUsername;
private void animateWhenLoginSuccess(){
FXMLLoader fxmlLoader = new FXMLLoader();
fxmlLoader.setLocation(getClass().getResource("DockFXML.fxml"));
Parent main = fxmlLoader.load();
DockFXMLController c = (DockFXMLController) fxmlLoader.getController();
c.loginUsername = tfUsername.getText();
// Print below works which means that a String is okay
System.out.println(c.loginUsername);
}
@FXML
private boolean loginSuccessful() throws SQLException{
// Login check in MySQL
}
}
DockFXMLController
public class DockFXMLController implements Initializable {
@FXML
private Label lblName;
public String loginUsername;
@Override
public void initialize(URL url, ResourceBundle rb) {
lblName.setText(loginUsername);
}
}
所以,我想在这个例子中得到的输出是显示在LoginFXML
输入的内容的用户,并显示在一个Label lblName
in DockFXML
。
谢谢你。我完全忽略了之前调用initialize()方法的事实。我正在阅读有关'Properties'的内容,看起来好像可以更好地访问'loginUsername'并多次调用它,而无需每次都编辑'animateWhenLoginSuccess()'。有没有可能在这里使用它? – brajevicm
我不知道您每次编辑animateWhenLoginSuccess()都意味着什么。我更新了一些稍微好一点的选项(包括公开第二个控制器的属性),但并不真正知道你在那里问什么。 –
对不起,如果我不清楚。通过“编辑'每次animateWhenLoginSuccess()'我的意思是,当我想让我说可以显示一些数据库中的图像,我必须通过用户名来找到它,我必须'c.setProfileImage(tfUsername.getText ));'例如。不知道我的逻辑有没有好,但到目前为止(在你的帮助下)我可以使用用户名显示数据库中的姓和名。 – brajevicm