Хобрук: Ваш путь к мастерству в программировании

JavaFX и TableView из SceneBuilder

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

номбрепасиенте

что я не получаю, и я не знаю, почему 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>

Я что-то упускаю?

07.04.2014

Ответы:


1

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

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

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

(с прописной буквой «П»).

07.04.2014
  • Извините, я забыл эту строку, когда набирал свой вопрос. 07.04.2014
  • Это действительно странно, потому что я вижу значение переменной часа в своем списке. На самом деле у меня есть еще 4, и каждая переменная отображается в табличном представлении и работает очень хорошо! Но моего значения переменной имени там нет :-( 07.04.2014
  • Скорее всего, причина в том, что ваше свойство в PropertyValueFactory неправильно соответствует методу getXXX. Но поскольку вы вводите вопрос независимо от вашего фактического кода, помочь практически невозможно. 07.04.2014
  • Вы правы, я отредактирую свой вопрос, скопировав и вставив. Спасибо. 07.04.2014
  • Новые материалы

    Введение в контекст React
    В этом посте мы поговорим о Context API, который был представлен в React 16, и о том, как вы можете их использовать. Что такое контекст? Глядя на определение из react docs , оно..

    Шлюз с лицензией OSS, совместимый с Apollo Federation v2, появится в WunderGraph
    Сегодня мы рады сообщить, что мы сотрудничаем с поддерживаемой YC Tailor Technologies, Inc. для внедрения Apollo Federation v2. Реализация будет лицензирована MIT (Engine) и Apache 2.0..

    Это оно
    Ну, я официально уволился с работы! На этой неделе я буду лихорадочно выполнять последние требования Думающего , чтобы я мог сосредоточиться на поиске работы. Что именно это значит?..

    7 полезных библиотек JavaScript, которые вы должны использовать в своем следующем проекте
    Усильте свою разработку JavaScript Есть поговорка «Не нужно изобретать велосипед». Библиотеки — лучший тому пример. Это поможет вам написать сложные и трудоемкие функции простым способом...

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

    C в C.R.U.D с использованием React-Redux
    Если вы использовали React, возможно, вы знакомы с головной болью, связанной с обратным потоком данных. Передача состояния реквизитам от родительских компонентов к дочерним компонентам может..

    5 обязательных элементов современного инструмента конвейера данных
    В цифровом мире предприятия используют конвейеры данных для перемещения, преобразования и хранения огромных объемов данных. Эти конвейеры составляют основу бизнес-аналитики и играют..