2013-07-24 2 views
1

У меня есть таблица со столбцом «Категория», которая отображается с помощью JComboBox. В этой таблице хранятся элементы Расход и называется «Таблица расходов». JComboBox создается следующим образом: JComboBox (новый DefaultComboBoxModel()).Данные совместного использования JComboBox с TableModel

public class Expense { 
    Tag category; 
} 

class Tag { 
    String name; 
} 

Я хотел бы настроить категории. Поэтому я создал таблицу «Категории» для добавления, удаляя возможные значения в Категории. В этой таблице используется TagTableModel и работает с данными полей, которые содержат значение ArrayList.

class TagTableModel 
    extends AbstractTableModel { 
    ArrayList<Tag> data; 
    ... 
} 

После того, как пользователь изменяет значение в таблице «Категории»: добавляет категории, удаляет категорию, редактирует столбец «Name» на каком-то ряду, я хотел бы значения в JComboBox быть обновлен.

Каковы возможные способы заставить JComboBox полагаться на значения из TagTableModel?

+0

вы можете до возвращения значения из столбца (ов), из AbstractTableModel на основе util.List, но то могут быть дубликаты, вы уверены, что значение в столбце не может содержать дубликатов, во всех случаях вам нужно вычислять с помощью ... – mKorbel

+0

реализовать TableModelListener, который обновляет модель комбо – kleopatra

+0

TableModelListener работал отлично! Спасибо. Как ответить на этот вопрос? :) – Willmore

ответ

1

Спасибо @kleopatra за идею :)

Я использовал TableModelListener как было предложено: создано

public class CategoryTableModelListener 
    implements TableModelListener 
{ 
    public void tableChanged(TableModelEvent e) 
    { 
     /** here I get changed row and access object that was in this row and has changed */ 
    } 
} 
+0

Возможно, это был бы лучший подход к написанию одна модель, которая реализует интерфейсы для обоих типов компонентов (ComboBoxModel & TableModel). Таким образом, у вас есть только один источник данных и не нужно поддерживать две разные модели. – maxdev

Смежные вопросы