来自SceneBuilder的JavaFX和TableView

时间:2014-04-07 15:26:46

标签: java javafx scenebuilder

我认为这个问题就像你忘记了代码中的分号一样。我创建了一个要在tableview中显示的列表,但只有一个项目

  

nombrepaciente

我没有得到,我也不知道为什么mi table没有显示该项目。

这是我的豆

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 个答案:

答案 0 :(得分:1)

传递给PropertyValueFactory的值不正确:它需要匹配get ...()方法。

即。你需要

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

(大写&#34; P&#34;)。