在我的项目中,我有几个JComboBox及其自定义模型。基本上它们用于显示某些JTables列的值(因此我决定在相对上实现它们) class extends extendsTableModel)。
public class MyTableModel1 extends AbstractTableModel{
protected class MyTableComboBoxModel1 extends AbstractListModel implements ComboBoxModel{
private Object selected;
@Override
public Object getElementAt(int index) {
return getValueAt(index, 1);
}
@Override
public int getSize() {
return getRowCount();
}
@Override
public Object getSelectedItem() {
return this.selected;
}
@Override
public void setSelectedItem(Object anItem) {
this.selected = anItem;
}
}
}
我有几个模型:MyTableModel2和MyTableComboBoxModel2。这些模型都做了相同的事情,除了一些额外的操作既不与组合框也不与表本身相关。
所有这些东西的目的应该是根据相对JTable的修改来更新JComboBox的显示值。
除了一种情况外,一切都适用于我已经实现的模型,经过几个小时的调试后我仍然无法解决它。窃听模型的代码几乎与其他代码完全相同。可能它在我的代码中的其他地方是一个bug,但我无法弄清楚在哪里。
错误的情况有以下行为:当我最初创建一个具有某些值的表时,即使在JComboBox中也正确显示这些值,但是当我添加新行时,显示的值将全部为空(显示的空白菜单的大小)是正确的)。 我发现了:
有人知道吗?你能建议我怎么能在这种情况下调试?不幸的是我不能发布SSCCE ..我希望有人可以提供帮助..
答案 0 :(得分:2)
我知道我的问题有点模糊
这就是需要SSCCE的原因。
每个组合框应显示现有JTable的特定列的所有值
我不明白为什么你需要一个自定义模型。我猜你只需要使用TabelModelListener。
每当添加/删除值时,您都会更新组合框。