Доступ к объекту дерева в схеме NetBeans

Я использую Outline из NetBeans для отображения некоторых структурированных данных.

Как я могу сопоставить выбранную строку с объектом в дереве?

1 ответ

Решение

Вы можете посмотреть пример в разделе "Объявление новой таблицы Swing Tree" сегодня. Похоже, что автор создает модель данных, поэтому ответ на выбор узла должен быть полезным. Я нахожу класс org.netbeans.swing.outline.Outline в NetBeans 6.8:

NetBeans/platform11/modules/org-netbeans-swing-outline.jar

Дополнения:

Обратите внимание, что Outline спускается с JTable Как использовать таблицы: выбор пользователя может быть полезен. Основываясь на приведенном выше примере, вот слушатель, который показывает очевидное изменение номера строки при расширении и сворачивании узлов, и выбор остается постоянным:

outline.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
    @Override
    public void valueChanged(ListSelectionEvent e) {
        int row = outline.getSelectedRow();
        File f = (File) outline.getValueAt(row, 0);
        if (!e.getValueIsAdjusting()) {
            System.out.println(row + ": " + f);
        }
    }
});

Хотя предварительный, вы можете посмотреть на OutlineModel а также DefaultOutlineModel, Первый реализует оба TreeModel а также TableModel и предложения TreePathSupport; последний упоминает "несоответствие импеданса между TableModelEvent и TreeModelEvent".

подобно JTableвыбранный индекс строки в представлении может не соответствовать соответствующей строке в модели, возможно, из-за сортировки и т. д. getValueAt() метод кажется удобным способом вызова convertRowIndexToModel(), Это распространено в разделяемой архитектуре модели Swing, которая "объединяет части представления и контроллера каждого компонента в единый объект пользовательского интерфейса (пользовательского интерфейса)". Смотрите обзор архитектуры Swing.

Другие вопросы по тегам