Итак, я использовал конструктор сцены для создания двух списков, и мне нужно заполнить первый содержимым наблюдаемого списка, который я создал в классе ItemList.Однако компоненты FXML в классе не отображаются как связанные, и когда я запускаю код, представление списка пустое.
Вот мой класс:
import javafx.collections.ObservableList;
import javafx.fxml.Initializable;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.*;
import java.net.URL;
import java.util.ResourceBundle;
public class ItemList {
@FXML
ListView<String> itemsList;
ListView<String> orderList;
@FXML
public ObservableList<String> listOfItems;
public ObservableList<String> listOfOrder;
public void initialize() {
listOfItems = FXCollections.observableArrayList();
listOfOrder = FXCollections.observableArrayList();
listOfItems.add("Nachos (£4)");
listOfItems.add("Popcorn Sweet (£3)");
listOfItems.add("Popcorn Salty (£3)");
listOfItems.add("Regular Coke (£1)");
listOfItems.add("Regular Tango Ice Blast (£4.50)");
itemsList.setItems(listOfItems);
orderList.setItems(listOfOrder);
}
public void addItem(ActionEvent actionEvent) {
int i = itemsList.getSelectionModel().getSelectedIndex();
if (i != -1) {
listOfOrder.add(itemsList.getSelectionModel().getSelectedItem());
} else {
Alert alert = new Alert(Alert.AlertType.WARNING, "No Item Selected", ButtonType.OK);
alert.showAndWait();
}
}
public void removeItem(ActionEvent actionEvent) {
int i = orderList.getSelectionModel().getSelectedIndex();
if (i != -1) {
listOfOrder.remove(i);
} else {
Alert alert = new Alert(Alert.AlertType.WARNING, "No Item Selected", ButtonType.OK);
alert.showAndWait();
}
}
}
Часть моего контроллера:
public ListView itemsList;
public ListView orderList;
@FXML
private void handleButtonAction(MouseEvent event) {
if (event.getTarget() == btnBookings) {
pageBookings.toFront();
new ItemList().initialize();
itemsList.setItems(new ItemList().listOfItems);
}
}