Данные таблицы 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