2013-07-24 17 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上,但那么可能有重复,你确定列中的值不能包含重复项,在所有情况下,你必须使用.... – mKorbel

+0

实现了一个TableModelListener,更新组合的模型 – kleopatra

+0

TableModelListener工作得很好!谢谢。如何使这个问题回答?:) – Willmore

回答

1

谢谢@kleopatra的想法:)

我使用TableModelListener的建议:基于util.List从塔(S)创建

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