JavaFX и TableView от SceneBuilder

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

nombrepaciente

что я не получаю, и я не знаю, почему моя таблица не показывает только этот элемент.

Вот мой боб

public class CitaBeanTable {

    public SimpleStringProperty nombrepaciente = new SimpleStringProperty();
    public SimpleStringProperty hora =      new SimpleStringProperty();
    public SimpleStringProperty estado =    new SimpleStringProperty();
    public SimpleStringProperty notas = new SimpleStringProperty();

    public String getHora() {
        return hora.get();
    }
    public String getEstado() {
        return estado.get();
    }
    public String getNotas() {
        return notas.get();
    }
    public String getNombrePaciente() {
        return nombrepaciente.get();
    }

}

Вот мой контроллер

public class CitasController implements Initializable {

    @FXML private TableView<CitaBeanTable> tblCitas;
    @FXML private TableColumn clnNombrePaciente;
    @FXML private TableColumn clnHora;
    @FXML private TableColumn clnEstado;
    @FXML private TableColumn clnNotas;
    ObservableList<CitaBeanTable> citasObservable;


    private final ListChangeListener<CitaBeanTable> selectorTableCita =
       new ListChangeListener<CitaBeanTable>() {

        @Override
        public void onChanged(ListChangeListener.Change<? extends CitaBeanTable> change) {
        ponerCitaSeleccionada();
        }
    };

    private void ponerCitaSeleccionada() {
    //Do Something.
    }

    public CitaBeanTable getTablaCitaSeleccionada() {

        if (tblCitas != null) {

            List<CitaBeanTable> tabla = 
                tblCitas.getSelectionModel().getSelectedItems();

            if(tabla.size() == 1) {
            final CitaBeanTable competicionSeleccionada = tabla.get(0);
            return competicionSeleccionada;
            }
        }
        return null;
    }

    private void inicializarTablaCitas(){

    clnNombrePaciente.setCellValueFactory(new PropertyValueFactory<CitaBeanTable, String>("nombrepaciente"));
    clnHora.setCellValueFactory(new PropertyValueFactory<CitaBeanTable, String>("hora"));
    clnEstado.setCellValueFactory(new PropertyValueFactory<CitaBeanTable, String>("estado"));
    clnNotas.setCellValueFactory(new PropertyValueFactory<CitaBeanTable, String>("notas"));

    citasObservable = FXCollections.observableArrayList();
    tblCitas.setItems(citasObservable);

    }

    @Override
    public void initialize(URL url, ResourceBundle rb) {

        this.inicializarTablaCitas();

        final ObservableList<CitaBeanTable> tablaCitaSel = 
            tblCitas.getSelectionModel().getSelectedItems();
        tablaCitaSel.addListener(selectorTableCita);

        List<CitaBean> arregloCitas = new ArrayList();
        XMLParserCita xmlParser = new XMLParserCita();
        XMLParserPaciente xmlParserPaciente = new XMLParserPaciente();

        try {

        arregloCitas = xmlParser.getCitasPorFecha(datePicker.getValue().toString());

        for (int i=0; i<arregloCitas.size(); i++) {

            CitaBeanTable citaTable = new CitaBeanTable();

            // This method is working fine.
            citaTable.nombrepaciente.
                set(xmlParserPaciente.
                getNombrePacientePorCodigo(arregloCitas.get(i).
                getCodigopaciente().toString()));

            citaTable.hora.set(arregloCitas.get(i).getHora());
            citaTable.estado.set(arregloCitas.get(i).getEstado());
            citaTable.notas.set(arregloCitas.get(i).getNotas());

            citasObservable.add(citaTable);
        }

        } catch(Exception e) {
            e.printStackTrace();
        }
    }
}

Вот мой FXML:

<TableView fx:id="tblCitas">
    <columns>
            <TableColumn prefWidth="251.0" text="Paciente" fx:id="clnNombrePaciente" />
            <TableColumn prefWidth="75.0" text="Hora" fx:id="clnHora" />
            <TableColumn prefWidth="184.0" text="Estado" fx:id="clnEstado" />
            <TableColumn prefWidth="180.0" text="Notas" fx:id="clnNotas" />
    </columns>
 </TableView>

Я что-то пропустил?

1 ответ

Решение

Значение, которое вы передаете в PropertyValueFactory, неверно: оно должно соответствовать методу get...().

Т.е. тебе нужно

clnNombrePaciente.setCellValueFactory(new PropertyValueFactory<CitaBeanTable, String>("nombrePaciente"));

(с заглавной буквы "P").

Другие вопросы по тегам