Данные таблицы Java Java 2.2 изменяются при прокрутке таблицы вверх и вниз

Я использовал tableView в JavaFX2.2. У меня есть столбец, в котором я сохранил значения, которые обновляются, когда пользователь нажимает кнопку. Эти значения динамически заполняются, и пока эта часть не работает нормально. Однако, когда я прокручиваю таблицу вниз, чтобы увидеть другие значения в таблице, данные ячейки изменяются. Подскажите, пожалуйста, что мне нужно сделать, чтобы решить эту проблему?

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

        Callback cellFactoryField = new Callback() {                

        @Override
        public TableCell call(final TableColumn param) {
            final Button button = new Button("Select Field");                    
            final TableCell cell = new TableCell() {

                @Override
                public void updateItem(Object item, boolean empty) {
                    super.updateItem(item, empty);
//                                label.setText("Here");                            
                    if (empty) {
//                                System.out.println("table cell inside updateitem = "+item);
//                                setGraphic(null);
                    }
                    else
                    {      

                    }
                }
            };
            button.setOnAction(new EventHandler() {
                private CheckBoxTreeItem checkBoxTreeItem;
                private CheckBoxTreeItem nodeFieldName;
                private CheckBoxTreeItem nodeFieldName2;
                private CheckBoxTreeItem nodeFieldName3;
                private Stage stage = new Stage();

                @Override public void handle(ActionEvent e) 
                {
                    CheckBoxTreeItem rootItem = 
                        new CheckBoxTreeItem("Tables");                            
                    rootItem.setExpanded(true);                  

                    final TreeView tree = new TreeView(rootItem);  
                    tree.setEditable(true);

                    tree.setCellFactory(CheckBoxTreeCell.forTreeView());                                                            
                    {
                        checkBoxTreeItem = new CheckBoxTreeItem("Sample Table" );//+ (i+1));                                
                        rootItem.getChildren().add(checkBoxTreeItem);                                                
                        nodeFieldName = new CheckBoxTreeItem("Field Name1");                                
                        nodeFieldName2 = new CheckBoxTreeItem("Field Name2");
                        nodeFieldName3 = new CheckBoxTreeItem("Field Name3");
                        checkBoxTreeItem.getChildren().addAll(nodeFieldName, nodeFieldName2, nodeFieldName3);                    

                    }                                    
                    tree.setRoot(rootItem);
                    tree.setShowRoot(true);                            
                    StackPane root = new StackPane();                                
                    root.getChildren().add(tree);
                    Button selectButton = new Button("Select");
                    HBox hbox = new HBox();
                    hbox.getChildren().add(selectButton);
                    hbox.setAlignment(Pos.CENTER);
                    selectButton.setOnAction(new EventHandler(){

                        @Override
                        public void handle(ActionEvent t) {

                            final ArrayList selectedValues = new ArrayList(); 
     //                                    System.out.println("Selected tree items are : ");
                            if(checkBoxTreeItem.isSelected())
                                selectedValues.add(checkBoxTreeItem.getValue());
                            if(nodeFieldName.isSelected())
                                selectedValues.add(nodeFieldName.getValue());
                            if(nodeFieldName2.isSelected())
                                selectedValues.add(nodeFieldName2.getValue());
                            if(nodeFieldName3.isSelected())
                                selectedValues.add(nodeFieldName3.getValue());                               
                            stage.hide();                                
                            for(int i = 0; i

Ответы на вопрос(1)

Ваш ответ на вопрос