我想在事件发生后更新JavaFx textfield上的值。我有一个RootScreen,它打开一个popup,而在那个popup中,我有一个listview。当用户选择该listview上的项时,它应该在RootScreen中更新texfield上的值。这是button上的操作的代码,它存在于每个列表项中。每个listItem都有一个TEXTFIELD和button来选择它。我希望TEXTFIELD上的值在texfield in RootScreen上,希望看到大写和小写,因为我试图使它尽可能容易理解。
public void initialize() {
button.setOnAction(event -> {
source = select.getParent();
//walletname is the name i want on textfield.
walletName = textField.getText();
getWalletName(walletName);
Stage stage = (Stage) source.getScene().getWindow();
stage.close();
});
}
private void getWalletName(String walletName){
profilePopup.SetText(walletName,rootScreenController);
}SetText方法在Popup View Class中。SetText方法的代码。
public void SetText(String walletName, OnClick onClick){
onClick.onMouseClicked(walletName);
}我有一个interface OnClick,它有一个onMouseClicked方法。我用RootScreen实现的接口
public interface OnClick {
void onMouseClicked(String name);
}这就是我在接口中重写方法的方式。
@Override
public void onMouseClicked(String walletName) {
textfield.setText(walletname);
}但是它没有更新textfield上的值。我是java的新手,所以我不知道在这里该做什么。
发布于 2018-09-24 00:12:20
如果您有一个弹出屏幕来填充来自ListView的信息,我认为最好是如果ListView条目是集合中的对象或对象。这是分离ListView上每个条目的唯一方法--从对象中提取信息,而不是从ListView中派生出一个单数项。
发布于 2018-09-24 14:52:08
下面是一个可运行的示例,我认为您已经把这个问题复杂化了,您可以使用.setOnMouseClicked功能来简化这个问题。
public class Main extends Application {
public static void main(String[] args) { launch(args); }
@Override
public void start(Stage primaryStage) {
TextField textField = new TextField("Not the same");
ListView<String> listView = new ListView<>();
listView.getItems().add("Item 1");
listView.getItems().add("Item 2");
listView.getItems().add("Item 3");
listView.setOnMouseClicked(event -> {//You can change this if need be
textField.setText(listView.getSelectionModel().getSelectedItem());
});
VBox vBox = new VBox();
vBox.getChildren().addAll(listView, textField);
Scene scene = new Scene(vBox);
primaryStage.setScene(scene);
primaryStage.show();
}
}https://stackoverflow.com/questions/52460996
复制相似问题