I think this problem is like when you forget a semicolon in the code. I'm creating a list to show in a tableview but there is only one item

nombrepaciente

that I'm not getting and I don't know why mi table is not showing just that item.

Here is my bean

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();
    }

}

Here is my controller

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();
        }
    }
}

Here is my 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>

Am I missing something?

有帮助吗?

解决方案

The value you pass into the PropertyValueFactory is incorrect: it needs to match the get...() method.

I.e. you need

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

(with an uppercase "P").

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top