LINUX.ORG.RU

Как прикрутить SQL-модель данных к TableView?

 , ,


1

2

Собственно, сабж. Вчера попытался - не вышло.

Кусок кода формирования колонок и привязки модели (на основе туториала на сайте оракла):

public class NomenclatureListController implements Initializable {

    @FXML
    private TableView<Map<String, String>> tableView_Nomenclature;
    
    @FXML
    private TreeView<String> treeView_Nomenclature;
    
    /**
     * Initializes the controller class.
     */
    @Override
    public void initialize(URL url, ResourceBundle rb) {
        
        List<TableColumn<Map, String>> columnsData = new ArrayList<TableColumn<Map, String>>();
        
        NomenaclatureList list = new NomenaclatureList();
        
        List<String> columns = list.getColumns();
        for (String colName : columns) {
            TableColumn<Map, String> datacol = new TableColumn<>(colName); //TODO: must to be representation here
            datacol.setCellValueFactory(new MapValueFactory(colName));
            columnsData.add(datacol);
        }
        
        tableView_Nomenclature = new TableView<Map<String, String>>(list.getData(0, 0));
        
        //tableView_Nomenclature.getColumns().addAll(columnsData);
        for (TableColumn coldata : columnsData) {
            tableView_Nomenclature.getColumns().add(coldata);
        }
        
        Callback<TableColumn<Map, String>, TableCell<Map, String>> cellFactoryForMap = new Callback<TableColumn<Map, String>, TableCell<Map, String>>() {

            @Override
            public TableCell<Map, String> call(TableColumn<Map, String> param) {
                return new TextFieldTableCell(new StringConverter() {
                    @Override
                    public String toString(Object t) {
                        return t.toString();
                    }
                    @Override
                    public Object fromString(String string) {
                        return string;
                    }                                    
                });
            }
        };
        
        for (TableColumn coldata : columnsData) {
            coldata.setCellFactory(cellFactoryForMap);
        }
        
    }    
    
}


public class NomenaclatureList implements DataModel {

    private final String _CODE = "code";
    private final String _NAME = "name";
    
    @Override
    public List<String> getColumns() {
        //throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        
        List<String> columns = new ArrayList<String>();
        columns.add(_CODE);
        columns.add(_NAME);
        
        return columns;
    }

    @Override
    public ObservableList<Map<String, String>> getData(int from, int to) {
        //throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        
        ObservableList<Map<String, String>> data = FXCollections.observableArrayList();
        
        Map<String, String> str1 = new HashMap<>();
        str1.put(_CODE, "1");
        str1.put(_NAME, "name1");
        
        data.add(str1);
        
        Map<String, String> str2 = new HashMap<>();
        str2.put(_CODE, "2");
        str2.put(_NAME, "name2");
        
        data.add(str2);
        
        return data;
    }
    
}

К слову, этот код у меня не заполняет колонки в таблице и, соответственно, данных нет в таблице.

★★★★★

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.