Visual Studio 2008 - добавляет ссылку

То, что вам не хватает, - это cellValueFactory для ваших столбцов, которые будут сообщать столбцу, какое значение будет отображаться в его ячейках.

Что-то вроде этого:

TableView> tableView = new TableView<>();
List columnNames = dataGenerator.getNext(N_COLS);
for (int i = 0; i < columnNames.size(); i++) {
    final int finalIdx = i;
    TableColumn, String> column = new TableColumn<>(
            columnNames.get(i)
    );
    column.setCellValueFactory(param ->
            new ReadOnlyObjectWrapper<>(param.getValue().get(finalIdx))
    );
    tableView.getColumns().add(column);
}

Пример приложения

Это решение было немного основано на сообщении блога Narayan: Обновлено: Динамические данные TableView из базы данных . Вместо этого сообщения в блоге это решение использует генератор тестовых данных для генерации некоторых фиктивных данных и некоторых функций лямбда Java 8, которые делают заводское определение значения ячейки немного менее громоздким для записи и просмотра.

import javafx.application.Application;
import javafx.beans.property.ReadOnlyObjectWrapper;
import javafx.collections.*;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.stage.Stage;

import java.util.*;

public class DynamicTableView extends Application {    
    private static final int N_COLS = 5;
    private static final int N_ROWS = 1_000;

    public void start(Stage stage) throws Exception {
        TestDataGenerator dataGenerator = new TestDataGenerator();

        TableView> tableView = new TableView<>();

        // add columns
        List columnNames = dataGenerator.getNext(N_COLS);
        for (int i = 0; i < columnNames.size(); i++) {
            final int finalIdx = i;
            TableColumn, String> column = new TableColumn<>(
                    columnNames.get(i)
            );
            column.setCellValueFactory(param ->
                    new ReadOnlyObjectWrapper<>(param.getValue().get(finalIdx))
            );
            tableView.getColumns().add(column);
        }

        // add data
        for (int i = 0; i < N_ROWS; i++) {
            tableView.getItems().add(
                    FXCollections.observableArrayList(
                            dataGenerator.getNext(N_COLS)
                    )
            );
        }

        tableView.setPrefHeight(200);

        Scene scene = new Scene(tableView);
        stage.setScene(scene);
        stage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }

    private static class TestDataGenerator {
        private static final String[] LOREM = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc tempus cursus diam ac blandit. Ut ultrices lacus et mattis laoreet. Morbi vehicula tincidunt eros lobortis varius. Nam quis tortor commodo, vehicula ante vitae, sagittis enim. Vivamus mollis placerat leo non pellentesque. Nam blandit, odio quis facilisis posuere, mauris elit tincidunt ante, ut eleifend augue neque dictum diam. Curabitur sed lacus eget dolor laoreet cursus ut cursus elit. Phasellus quis interdum lorem, eget efficitur enim. Curabitur commodo, est ut scelerisque aliquet, urna velit tincidunt massa, tristique varius mi neque et velit. In condimentum quis nisi et ultricies. Nunc posuere felis a velit dictum suscipit ac non nisl. Pellentesque eleifend, purus vel consequat facilisis, sapien lacus rutrum eros, quis finibus lacus magna eget est. Nullam eros nisl, sodales et luctus at, lobortis at sem.".split(" ");

        private int curWord = 0;

        List getNext(int nWords) {
            List words = new ArrayList<>();

            for (int i = 0; i < nWords; i++) {
                if (curWord == Integer.MAX_VALUE) {
                    curWord = 0;
                }

                words.add(LOREM[curWord % LOREM.length]);
                curWord++;
            }

            return words;
        }
    }
}

17
задан SamB 14 April 2010 в 00:27
поделиться

5 ответов

Управление исходным кодом:

Ben Straub сказал в комментарии этому сообщению: Эти .dll.refresh файлы должны быть добавлены к управлению исходным кодом при необходимости, в то время как .xml, .pdb и конечно эти .dll файлы не должны быть добавлены.

John Rudy объяснил, когда добавить .refresh файл:

, Почему это - хорошая вещь (иногда)? Скажем, Вы находитесь в среде команды. Кто-то регистрируется в коде для foo.dll, и Ваша система сборки создает новый DLL, производя его в доле файла на сервере. Ваш файл обновления указывает на ту копию сервера DLL. В следующий раз, когда Вы создаете, VS автоволшебно захватит последнюю и самую большую копию того DLL.

.xml как сказанный David Mohundro:

XML-файл там для XML-комментариев и intellisense. Visual Studio проанализирует это и отобразит XML-комментарии, которые были добавлены, когда Вы называете методы в тех DLLs.

.pdb как сказанный David Mohundro:

pdb там для отладки и символов. Если Вы бросите исключение от него, то Вы сможете получить stacktraces и т.д. Вы управляете выбором, создается ли PDB.

.refresh от сообщения в блоге о .refresh файлах:

Это говорит VS, где искать обновленные версии dll с тем же базовым именем. Они - текстовые файлы, можно открыть их и видеть путь, который это использует.

Их цель состоит в том, чтобы препятствовать тому, чтобы Вы имели для копирования новых версий сами. В VS2003 файл проекта содержал бы исходное местоположение ссылки, но так как VS2005 не использует файлы проекта для проектов ASP.NET, это - замена для той особой функциональности.

20
ответ дан 30 November 2019 в 10:46
поделиться

pdb там для отладки и символов. Если Вы бросите исключение от него, то Вы сможете получить stacktraces и т.д. Вы управляете выбором, создается ли PDB. XML-файл там для XML-комментариев и intellisense. Visual Studio проанализирует это и отобразит XML-комментарии, которые были добавлены, когда Вы называете методы в тех DLLs.

я не знаю о файле обновления.

11
ответ дан 30 November 2019 в 10:46
поделиться

Файл обновления (так как ничей хит на этом все же!) описывает, куда DLL прибыл из. Это для ссылок автообновления; каждый раз, когда Вы делаете полную сборку, VS посмотрит в том пути и скопирует ту версию DLL.

, Почему это - хорошая вещь (иногда)? Скажем, Вы находитесь в среде команды. Кто-то регистрируется в коде для foo.dll, и Ваша система сборки создает новый DLL, производя его в доле файла на сервере. Ваш файл обновления указывает на ту копию сервера DLL. В следующий раз, когда Вы создаете, VS автоволшебно захватит последнюю и самую большую копию того DLL.

13
ответ дан 30 November 2019 в 10:46
поделиться

foo.pdb является файлом символов отладчика для foo.dll, Вы захотите его, или Вы не сможете установить точку останова в том коде.

3
ответ дан 30 November 2019 в 10:46
поделиться

VS2008 добавляет несколько файлов к каталогу bin [...] они должны быть добавлены в управлении исходным кодом?

Ничто в каталоге bin не должно быть добавлено к управлению исходным кодом. Одна из первой вещи, первоначально регистрирование в проекте должно проигнорировать мусорное ведро и obj каталоги. Таким образом да, можно удалить эти файлы, но Visual Studio воссоздаст их.

2
ответ дан 30 November 2019 в 10:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: