我可以将stage.getUserData与TextBox绑定吗?
我的目标是。
如果用户选择我的应用程序,我会在事件focusProperty中的方法start stage.setUserData中保存信息。
public void start(Stage stage) throws Exception {
try{
Parent root = FXMLLoader.load(getClass().getResource("Hlavni.fxml"));
Scene scene = new Scene(root);
stage.setScene(scene);
stage.getIcons().add(new Image("file:kcl.gif"));
stage.setTitle("KCL - Evidence hovorů - v1.0");
stage.show();
/*
Implementujeme událost - stav kdy uživatel vybere okno aplikace.
*/
stage.focusedProperty().addListener((ObservableValue<? extends Boolean> ov, Boolean lostFocus, Boolean gainFocus) -> {
if (gainFocus==true) {
try {
/*
Po výběru gainFocus naplníme systémovou metodu stage.setUserData
V kontroleru dané vyzvědneme přes zjištěnou stage.getUserData
Do metody ukládáme, pouze pokud je null
*/
// Pokud je stage.getUserData == null, uložíme tam číslo, jinak nic.
if(stage.getUserData() == null){
// Připojíme se do MSSQL a zjistíme telefonní číslo
stage.setUserData("607700962");
}
}catch(Exception e){
e.printStackTrace();
}
}
});
在控制器中我需要自动填充TextBox。
因为我有想法使用TextBox绑定stage.getUserData。
答案 0 :(得分:0)
我只是在控制器类中放入一个方法并调用它:
e.g。
public class MyController {
// @FXML-annotated nodes from fxml file, e.g.
@FXML
private TextField textField ;
public void initialize() {
// ...
}
// handlers etc...
public void setInformation(String data) {
// update text box:
textField.setText(data);
}
}
然后你就可以了
public void start(Stage stage) throws Exception {
try{
FXMLLoader loader = new FXMLLoader(getClass().getResource("Hlavni.fxml"));
Parent root = loader.load();
MyController controller = loader.getController();
Scene scene = new Scene(root);
stage.setScene(scene);
stage.getIcons().add(new Image("file:kcl.gif"));
stage.setTitle("KCL - Evidence hovorů - v1.0");
stage.show();
stage.focusedProperty().addListener((ObservableValue<? extends Boolean> ov, Boolean lostFocus, Boolean gainFocus) -> {
if (gainFocus) {
controller.setInformation("607700962");
}
});
} catch (Exception exc) {
exc.printStackTrace();
}
// ...
}