有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JavaComboxTableCell依赖于JavaFx的另一个同类

我希望我自己能找到这个(从James_D那里找到了许多其他有用的答案),但这是我的故事

1)我有一个项目的“中央”存储库,由参数如下的对象组成:

listOfItems.add(new Item("ABCD", "typeA", new ArrayList<String>(Arrays.asList("10", "20", "30")))); 
listOfItems.add(new Item("EFGH", "typeB", new ArrayList<String>(Arrays.asList("40", "50", "60"))));

2)我有一个JavaFx的tableView,我想在其中以行的形式存储一些组件,这些组件由10个值组成,其中一部分是第1点提到的Items repository中的三列/值。 这让我创建了“generateCellValueFactory”,看起来像这样:

private void generateCellValueFactory(TableColumn<Component, String> column, String name) {
    if(name.equals("Items_string_one")) {
        column.setCellValueFactory(cellData -> cellData.getValue().getProperty(name));
        ArrayList<String> list = itemsRepository.getFirstStrings(); //["ABCD" & "EFGH"]
        generateCombo(column, name,  list);
    } else if (name.equals("Items_lists_of_Strings")) {
        column.setCellValueFactory(cellData -> cellData.getValue().getProperty(name));
        List<String> list = itemsRepository.getUniqueStringsListsOfStrings();
// ! Unfortunately -> this returns me UNIQUE like list of every string inside those so in our case: ["10", "20", "30", "40", "50", "60"]
        generateCombo(column, name, list);
// 8 other columns factories - second string from Item + 7 not a part of "Items" repository. Overall 10 columns.

3)正如我们所看到的,我们包括了内部生成的mbo方法->;因为我希望每个组件的所有十个单元都是“ComboBoxTableCells”,其中一个负责setCellFactory部件:

private void generateCombo(TableColumn<Component, String> column, String name, List<String> list) {
    ObservableList<String> data = FXCollections.observableArrayList(list);
    if (name.equals("Items_string_one")) {
        column.setCellFactory(new Callback<TableColumn<Component, String>, TableCell<Component, String>>() {
            @Override
            public TableCell<Component, String> call(TableColumn<Component, String> param) {
                ComboBoxTableCell<Component, String> tableCell = new ComboBoxTableCell<Component, String>(data) {
                    @Override
                    public void commitEdit(String x) {
                        // Do something fancy
                     }
                 };
                 return tableCell;
            }
        });
    }else if (name.equals("Items_lists_of_strings")) {
        column.setCellFactory(new Callback<TableColumn<Component, String>, TableCell<Component, String>>() {

            @Override
            public TableCell<Component, String> call(TableColumn<Component, String> param) {
                ComboBoxTableCell<Component, String> tableCell = new ComboBoxTableCell<Component, String>(data) {
                    @Override
                    public void commitEdit(String x) {
                        // Do something fancy
                    }
                };
                return tableCell;
            }
        });
    }

我的问题是: 现在,当我选择组合框选项中的第一列时:
x ABCD/EFGH,这是完美的->;我在这里很高兴。 我也很高兴,因为她所有的八个专栏都在为我工作

对于“项目列表”列,我可以从各种可能性的唯一列表中进行选择。不错,但也不是我真正想要的,因为我想让计算“防规范错误”,所以当有人选择ABCD->;他可以在另一列得到10/20/30。 在这个ComboBoxTableCell中,我想将选项“绑定”到项目存储库:

如果->;第一列->;ABCD
然后->;ComboBoxTableCell有选项“要检查”:“10”、“20”、“30”

我希望我能提供每一个细节。我试图让这个问题的代码变得通用。 提前感谢您,我将等待任何进一步的问题和关注


共 (0) 个答案