JavaFX: список очищает значения при переключении сцен - PullRequest
0 голосов
/ 22 декабря 2018

У меня есть список значений, которые должны храниться, пока приложение открыто.

В моем приложении есть 2 сцены, которые управляются двумя разными файлами FXML.Когда я переключаю сцены, список очищает свои значения.Как я могу сохранить значения?

Может ли быть проблема в том, что я не открываю совершенно новый этап?

Мой код:

package listManagerMain;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Node;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.stage.Stage;

public class ControllerOne {

// ******* Main Objects *******
    @FXML
    List<String> listNames = new ArrayList<String>();
    int x = 1;
    Boolean sceneSwap;

    // ******* Scene 1 Objects *******
    @FXML
    public Button buttonShow,buttonAdd;
    @FXML
    public Label labelSize,labelResponse,labelName; 
    @FXML
    public TextField textName;

    // ******* Scene 2 Objects*******
    @FXML
    public Button buttonMenu;
    @FXML
    public TextArea textList;

    // ******* Code Start *******
    public void switchScene(ActionEvent event) throws IOException {
        Parent root;
        Scene scene;
        Stage window;
        if(event.getSource() == buttonShow) {
            if(listNames.size() == 0)
                return;

            root = FXMLLoader.load(getClass().getResource("GuiTwo.fxml"));
            scene = new Scene(root);
            window = (Stage) ((Node)event.getSource()).getScene().getWindow();
            window.setScene(scene);
            sceneSwap = true;
            window.show();
        }
        if(event.getSource() == buttonMenu) {
            root = FXMLLoader.load(getClass().getResource("GuiOne.fxml"));
            scene = new Scene(root);
            window = (Stage) ((Node)event.getSource()).getScene().getWindow();
            window.setScene(scene);
            sceneSwap = false;
            window.show();
        }

        if(sceneSwap != false) {
            System.out.println(""); // Code here
        }
    }

    public void addName() {
        if(textName.getText().equals("")) {
            labelResponse.setText("Enter a name!");
            return;
        }

        String name = textName.getText();
        listNames.add("Name " + x + ": " + name);
        labelResponse.setText("'" + name + "' added to list...");
        textName.setText("");
        labelSize.setText("Size: " + x);
        x++;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...