有幾個其他線程有類似的問題,但我嘗試了在這些答案中給出的代碼,但到目前爲止我沒有成功。我將提供我的代碼的顯着部分。我有兩個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