javafx diffrent ComboBoxTableCell用于列中的每一行

时间:2014-03-11 15:39:39

标签: javafx tableview

我正在尝试将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()));
    }
}

0 个答案:

没有答案