Обновите значение в текстовом поле в javafx после события - PullRequest
0 голосов
/ 23 сентября 2018

Я хочу обновить значение на JavaFx textfield после события.У меня есть RootScreen, который открывает popup, и в этом popup у меня есть listview.Когда пользователь выбирает элемент на этом listview, он должен обновить значение на texfield в RootScreen.Это код действия на button, которое присутствует в каждом элементе списка.Каждый listItem также имеет TEXTFIELD и button для его выбора.Я хочу, чтобы значение на TEXTFIELD было на texfield в 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);
    }

Но это не обновляет значение в текстовом поле.Я новичок в Java, поэтому я не уверен, что делать здесь.

Ответы [ 2 ]

0 голосов
/ 24 сентября 2018

Вот работающий пример, я думаю, что вы слишком усложняете это, вы можете использовать функциональность .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();
    }
}

для получения дополнительной информации о listView проверить это Вы также можете посмотреть на свойства объекта здесь

0 голосов
/ 24 сентября 2018

Если у вас есть всплывающий экран, который заполняет информацию из ListView, я думаю, что лучше всего, если запись ListView представляет собой объект или объект в коллекции.Это единственный способ отделить каждую запись в ListView - извлекать информацию из объекта, а не извлекать ее из ListView как отдельного элемента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...