我正在尝试将swing gui转换为javafx并遇到问题。
我有一个jtable(tobe转换为tableview),其中包含一个具有组合框的nr列作为" DefaultCellEditor"。组合框值(String [])根据jtable的行索引动态设置。
或者换句话说,该表有一列,其中每一行都有一个具有不同内容的组合框。
现在我知道,例如我如何为列中的每个单元格设置与编辑器相同的组合框,但(显然)不知道如何根据row_index将不同内容放入这些组合框中。
在摇摆中我像这样创建我的桌子:
jTable2 = new javax.swing.JTable(model)
{
// Determine editor to be used by row
public TableCellEditor getCellEditor(int row, int column)
{
int modelColumn = convertColumnIndexToModel( column );
if (Data_Source.ReturnCellEditor(row, column)!=null){
return Data_Source.ReturnCellEditor(row, column);
}
else{
return super.getCellEditor(row, column);
}
}
@Override
public Class<?> getColumnClass(int columnIndex) {
if (columnIndex == 0)
return Boolean.class;
return super.getColumnClass(columnIndex);
}
从他们那里得到一个只返回的方法,例如combobox-Object(Cast to DefaultCellEditor)取决于行和列id。
任何人都可以帮我找到一个在javafx tableview中做类似事情的解决方案吗?
谢谢!
EDIT1:
至于大脑的建议,我尽力做一个定制的细胞工厂......但我仍然缺少一些东西。这样getIndex()总是-1 ......
public class TestCell<S, T> extends TableCell<S, T> implements Callback<TableColumn<S, T>, TableCell<S, T>> {
public TestCell() {
}
@Override
public TableCell<S, T> call(TableColumn<S, T> p) {
TableCell<S, T> cell = new TableCell<S, T>() {
@Override
protected void updateItem(Object item, boolean empty) {
System.out.println("updateItem");
}
};
System.out.println(data.getCoverComboContent(getIndex()));
return (TableCell<S, T>) new ComboBoxTableCell<>(data.getCoverComboContent(getIndex()));
}
}