Как обновить GridPane на основе функции If Else? - PullRequest
0 голосов
/ 17 июня 2019

Я работаю над простым приложением корзины как мой первый функциональный проект с Java. Приложение будет отслеживать, какие тележки были извлечены, а какие доступны в каждом здании для первой итерации.

Я использовал функцию if else для создания GridPane bldg1Grid. Панель содержит только кнопки для проверки корзины, если она соответствует критериям наличия истинного статуса на складе, а также соответствующий номер здания для этой GridPane. Функция if else работает в первый раз и, в зависимости от исходного статуса тележки, показывает или не показывает кнопку этой тележки. Однако после того, как корзина извлечена, она использует метод, чтобы изменить этот статус на false. GridPane, кажется, застрял на оригинальной сборке, но я подтвердил использование оператора System.out.println переменной in stock, и он вернул изменение правильно. Я ОЧЕНЬ новичок в JavaFX, но я пытался использовать оператор else, используя /// bldg1Grid.getChildren (). Clear () /// и функции removeAll, но ни одна из них не работает. Я также попытался очистить функцию GridPane, чтобы заставить ее запускаться заново, но по какой-то причине не смог использовать GridPane в своей собственной функции. Помощь

Код корзины:

    Cart cart1 = new Cart(1,1,true,true,true);
    Cart cart2 = new Cart(2,1,true,true,true);
    Cart cart3 = new Cart(3,2,true,true,true);

Это одна из кнопок оригинальных сцен, которая переключается в здание 1, где проблема:

    @Override public void start(Stage primaryStage){
        stage = primaryStage;

        cart1Status = this.cart1Status;
        //Main scene build
        mainHeader = new Label();
        mainHeader.setText("Select which building cart is at:");

        bldg1 = new Button();
        bldg1.setText("Building 1");
        bldg1.setOnAction(event -> bldg1Select());

Моя сборка gridpane: - на этой итерации я попытался добавить альтернативную кнопку для else, а также попытался взять this.status и сделать его новой переменной, чтобы попытаться использовать его таким образом:

     GridPane bldg1Grid = new GridPane();
        bldg1Grid.addRow(0, buildingLabel);
        if (cart1Status == true){
            bldg1Grid.addRow(1, btnC1);
        } else if (cart1Status == false){
            bldg1Grid.addRow(0, btnTest);
        }
            else{
        }

        if (cart2.status == true && cart1.bldgNmbr == 1){
            bldg1Grid.addRow(2, btnC2);
        } else {}
        if (cart3.status == true && cart1.bldgNmbr == 1){
            bldg1Grid.addRow(3, btnC3);
        } else {}

мой метод, чтобы попытаться очистить область сетки:

    private void clearBldg1Grid(){
        bldg1Grid.getChildren().clear();
    }

Нет сообщений об ошибках, и переменная действительно изменяется и остается неизменной после использования метода для изменения состояния с истинного на ложное. Я доказал это, используя операторы println, и заставил их печатать до и после перехода на страницу, когда я переключался с основной сцены. Ожидаемый результат - каждый раз, когда вы идете в здание 1, он показывает только тележки, которые имеют статус == true && bldgNmbr == 1.

1 Ответ

0 голосов
/ 18 июня 2019

Мне не удалось правильно установить переменную в начале моего кода с «»» Private GridPane bldg1Grid; «»» Как только я это сделал, я смог вызвать его в своем методе, который очищал узлы на основе функции if.

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