同様の問題を抱えている他のスレッドはほとんどありませんが、これらの回答でコードを実装しようとしましたが、これまでのところ成功していません。私は自分のコードの注目すべき部分を提供します。私は2つのFXMLファイルLoginFXML
とDockFXML
と1つの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
をDockFXML
に設定します。
ありがとうございます。 'initialize()'メソッドが以前呼び出されているという事実を完全に見落としました。私は 'Properties'について読んでいたので、' loginUsername'にアクセスし、毎回 'animateWhenLoginSuccess()'を編集することなく複数回呼び出すほうがはるかに良い方法かもしれません。ここでそれを使うことは可能ですか? – brajevicm
「編集する」animateWhenLoginSuccess()が毎回何を意味するのか分かりません。私はいくつかのより良いオプション(2つ目のコントローラからプロパティを公開することを含む)を更新しましたが、実際にあなたが何を求めているのかは分かりません。 –
申し訳ありませんが私は明確でない場合。 「編集する」animateWhenLoginSuccess() '毎回「私は、データベースにあるイメージを表示してユーザー名で見つけなければならないときに、' c.setProfileImage(tfUsername.getText( ));例えば、。私のロジックが良いかどうかは分かりませんが、これまでのところ(あなたの助けを借りて)、ユーザー名を使ってデータベースから姓と名を表示できます。 – brajevicm