1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Atualização de TableView apagando o conteúdo da célula de texto

Prezados estou com problemas na minha TableView do JavaFx. Na minha coluna espelho possuo células onde digito os números e a partir do primeiro vai preenchendo os registros que vem logo na sequencia. O problema é que quando clico na tabela para ordenar por ordem de requerente por exemplo, ele apaga os números dessa coluna.

Pra facilitar o entendimento, eu tirei os prints do que está ocorrendo na minha tabela: https://www.filepicker.io/api/file/e6D4gsIjTUewvD5Lc57P

E quando atualizo a tabela, olha o que acontece:

https://www.filepicker.io/api/file/GqW7WhI3TpeAWBR5dK7Z

Segue o método que carrega a minha tabela:

@SuppressWarnings({ "unchecked", "rawtypes" })
    private void loadTabMirror() {


        TableColumn request = new TableColumn("Pedido");
        request.setCellValueFactory(new PropertyValueFactory<MirrorVo, String>("request"));
        request.setMinWidth(150);

        TableColumn applicant = new TableColumn("Requerente");
        applicant.setCellValueFactory(new PropertyValueFactory<MirrorVo, String>("name"));
        applicant.setMinWidth(400);


        TableColumn numberRg = new TableColumn("N° RG");
        numberRg.setCellValueFactory(new PropertyValueFactory<MirrorVo, String>("rg"));
        numberRg.setMinWidth(80);

        Callback<TableColumn<MirrorVo, String>, TableCell<MirrorVo, String>> txtMirrorCallBack = 
                new Callback<TableColumn<MirrorVo, String>, TableCell<MirrorVo, String>>() {

//Toda atualização que ocorre na tabela, entra nesse método, e por isso apaga meus campos. Como corrigir pra que não ocorra mais isso???
            @Override
            public TableCell call(final TableColumn param) {
                final TableCell cell = new TableCell() {

                    @Override
                    public void updateItem(Object item, boolean empty) {
                        super.updateItem(item, empty);
                        if (empty) {
                            setText(null);
                            setGraphic(null);
                        } else {
                            TextField textField =loadRuleTextField(param,getIndex()); 
                            textFieldMirrors.add(textField);
                            setGraphic(textField);
                            setContentDisplay(ContentDisplay.GRAPHIC_ONLY);
                        }
                    }
                };
                return cell;
            }
        };

        TableColumn mirror = new TableColumn("Espelho"); 
        mirror.setCellValueFactory(new PropertyValueFactory<MirrorVo, Integer>("mirror"));
        mirror.setMinWidth(100);
        mirror.setCellFactory(txtMirrorCallBack);

        Callback<TableColumn<MirrorVo, String>, TableCell<MirrorVo, String>> imgMirrorInfo = 
                new Callback<TableColumn<MirrorVo, String>, TableCell<MirrorVo, String>>() {

                    @Override
                    public TableCell<MirrorVo, String> call(
                            TableColumn<MirrorVo, String> param) {

                        final TableCell cell = new TableCell() {

                            @Override
                            public void updateItem(Object item, boolean empty) {
                                super.updateItem(item, empty);
                                if (empty) {
                                    setText(null);
                                    setGraphic(null);
                                } else {
                                    ImageView imgViewInfo = new ImageView(new Image("resources/img/info.png"));
                                    imgViewInfo.setFitWidth(32);
                                    imgViewInfo.setFitHeight(32);
                                    imgViewInfo.setVisible(false);
                                    imgViewInfos.put(getIndex(), imgViewInfo);
                                    setGraphic(imgViewInfo);
                                    setContentDisplay(ContentDisplay.GRAPHIC_ONLY);
                                }
                            }
                        };
                        return cell;
                    }

        };

        TableColumn info = new TableColumn("Status");
        info.setMinWidth(40);
        info.setCellFactory(imgMirrorInfo);

        Callback<TableColumn<CivilRecord, String>, TableCell<CivilRecord, String>> btnInvalidateCallBack = addActionBtnInvalidate();

        TableColumn validation = new TableColumn(" ");
        validation.setCellValueFactory(new PropertyValueFactory<CivilRecord, String>("dateRegisterLot"));
        validation.setMinWidth(100);
        validation.setCellFactory(btnInvalidateCallBack);


        Callback<TableColumn<CivilRecord, String>, TableCell<CivilRecord, String>> btnAutoGenerateCallBack = addActionBtnAutoGenerate();

        TableColumn autoGenerate = new TableColumn(" ");
        autoGenerate.setCellValueFactory(new PropertyValueFactory<CivilRecord, String>("dateRegisterLot"));
        autoGenerate.setMinWidth(100);
        autoGenerate.setCellFactory(btnAutoGenerateCallBack);

        tabMirror.getColumns().addAll(request,applicant,numberRg,mirror,info,autoGenerate, validation);
    }

Agradeço Desde Já!

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags java javafx properties ou faça a sua própria pergunta.