Я работаю над простым приложением корзины как мой первый функциональный проект с 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.