0
TableView 셀을 셀별로 복사하고 싶습니다. 나중에 수정할 수 있습니다. TableColumn을 인스턴스화 할 수 없기 때문에 열을 설정하는 방법을 알지 못하기 때문에 막혔습니다. rowHeader를 어떻게 처리해야하는지 또는 어떻게 다르게해야하는지 모르겠습니다.TableView 필드를 필드로 복사 (수정하기 위해)
public TableView<ObservableMap<String, CellDescriptor>> copyTableViewDeleteRow(int j)
{
//FIXME
TableView<ObservableMap<String, CellDescriptor>> tableViewCopy = new TableView<ObservableMap<String, CellDescriptor>>();
ObservableList<TableColumn<ObservableMap<String, CellDescriptor>, ?>> columns = tableView.getColumns();
ObservableList<TableColumn<ObservableMap<String, CellDescriptor>, ?>> columnsNew =
tableViewCopy.getColumns();
ListOrderedMap<String, CellDescriptor> rowHeader = new ListOrderedMap<>();
int rowIndex = 0;
int columnIndex = 0;
for (TableColumn<?, ?> column : columns) {
String cell = column.getText();
String key = COLUMN_KEY_PREFIX + Integer.toString(columnIndex);
CellDescriptor cd = new CellDescriptor(columnIndex, rowIndex, cell, this);
rowHeader.put(key, cd);
//TODO ? cannot instantiate TableColumn
TableColumn<ObservableMap<String, CellDescriptor>, ?> columnNew =
//new TableColumn<ObservableList<String>, CellDescriptor>(key, cd);
new TableColumn<ObservableMap<String, CellDescriptor>, ?>(cd);
++columnIndex;
}
ObservableList<ObservableMap<String, CellDescriptor>> itemsNew =
tableViewCopy.getItems();
++rowIndex;
for (Object row : tableView.getItems()) {
ObservableMap<String, CellDescriptor> e = FXCollections.observableMap(new HashMap<String, CellDescriptor>());
columnIndex = 0;
for (TableColumn column : columns) {
CellDescriptor cd = (CellDescriptor) column.getCellObservableValue(row).getValue();
CellDescriptor cdNew = cd.clone();
if(rowIndex == 1 && columnIndex == 1)
cdNew.setText("xxx");
e.put(COLUMN_KEY_PREFIX + columnIndex, cdNew);
++columnIndex;
}
itemsNew.add(e);
++rowIndex;
}
System.out.println("tableViewCopy columns size=" + tableViewCopy.getColumns().size()); // is zero
System.out.println("tableViewCopy items size=" + tableViewCopy.getItems().size()); // is three
return tableViewCopy;
}
크기가 0이므로 열이 누락 된 것처럼 보입니다.