如何使用javafx /场景构建器将对象的链接列表添加到TableView?

问题描述 投票:0回答:2

我正在开发一个非常简单的javafx应用程序,它具有几个不同的场景,我的第一个场景是将Show对象添加到通用链接列表中,然后在第二个场景中将其中一个显示的性能添加到该对象中(例如,在节目《安妮》中添加晚会或晚间表演)

我已经创建了第一个场景,并且可以将Show对象添加到链接列表中,但是我无法使用创建的显示来填充第二个场景中的tableview供用户选择和添加表演

这是我的添加显示控制器的外观:

public class AddShowController {

    @FXML private TextField titleField;
    @FXML private TextField cirField,stlField, balField;
    @FXML private Slider runTimeSlider;
    @FXML private DatePicker startDatePicker, endDatePicker;
    TheLinkedList<Show> showList = new TheLinkedList<>();

    private static AddShowController instance;

    public AddShowController() {
        instance = this;
    }

    public static AddShowController getInstance(){
        return instance;
    }

    public void addShowButtonPushed (ActionEvent e){

        showList.addElement(new Show (titleField.getText(),
                                (int) runTimeSlider.getValue(),
                                startDatePicker.getValue().toString(),
                                endDatePicker.getValue().toString(),
                                cirField.getText(),
                                stlField.getText(),
                                balField.getText()));
}

正如您所看到的,我已经尝试创建控制器的实例,以便可以从添加性能控制器访问链接列表,但没有任何乐趣。

这是添加性能控制器:


public class AddPerfController {

    @FXML private ChoiceBox perfTimeChoiceBox;

    @FXML private TableView<Show> showTable;
    @FXML private TableColumn<Show, String> titleColumn;
    @FXML private TableColumn<Show, String> runTimeColumn;
    @FXML private TableColumn<Show, String> startDateColumn;
    @FXML private TableColumn<Show, String> endDateColumn;
    @FXML private TableColumn<Show, String> cirTicketPriceColumn;
    @FXML private TableColumn<Show, String> stlTicketPriceColumn;
    @FXML private TableColumn<Show, String> balTicketPriceColumn;

    private ObservableList<Show> showData = FXCollections.observableList(AddShowController.getInstance().showList);

    public void initialize() {
        perfTimeChoiceBox.getItems().addAll("Matinee","Evening");
        perfTimeChoiceBox.setValue("Matinee");

        titleColumn.setCellValueFactory(new PropertyValueFactory<>("title"));
        runTimeColumn.setCellValueFactory(new PropertyValueFactory<>("runningTime"));
        startDateColumn.setCellValueFactory(new PropertyValueFactory<>("startDate"));
        endDateColumn.setCellValueFactory(new PropertyValueFactory<>("endDate"));
        cirTicketPriceColumn.setCellValueFactory(new PropertyValueFactory<>("cirTicketPrice"));
        stlTicketPriceColumn.setCellValueFactory(new PropertyValueFactory<>("stlTicketPrice"));
        balTicketPriceColumn.setCellValueFactory(new PropertyValueFactory<>("balTicketPrice"));

        showData.add(new Show("Annie", 100,"12/12/2019", "14/12/2019","10","15", "20"));
        showTable.setItems(showData);

    }
java javafx linked-list tableview scenebuilder
2个回答
© www.soinside.com 2019 - 2024. All rights reserved.