2013-02-14 59 views
0

我想在一个扩展AbstractTableModel的类中创建一个包含JCombobox的行。Java:在AbstractTableModel中添加一行JCombobox

我有一个称为数据的二维数组。我还使用方法getColumnCount()来实现两个按钮“上一个”和“下一个”。我已经标记了我应该在的位置,但我不知道应该如何在整行中执行。

public class SwitchTableModel extends AbstractTableModel{ 

    @Override 
    public int getRowCount() { 
     // Standard number of rows 
     return 3; 
    } 

    @Override 
    public int getColumnCount() { 
     // Number of columns change according to the data 
     return data [position].length + 1; 
    } 

    public Object getValueAt(int rowIndex, int columnIndex) { 
     switch (rowIndex) 
     { 
     case 0: 
      return columnIndex == 0 ? "ID" : idArray [data [position][columnIndex - 1]]; 
     case 1: 
      return columnIndex == 0 ? "Company Name" : company_nameArray [data [position][columnIndex - 1]]; 
     case 2: 
      return columnIndex == 0 ? "Double" : ...??? 
     default: 
      throw new Error(); 
     } 
    } 

    public void previous() 
    { 
     position -= 1; 
     if (position < 0) position = data.length - 1; 

     fireTableStructureChanged(); 
    } 

    public void next() 
    { 
     position += 1; 
     if (position >= data.length) position = 0; 

     fireTableStructureChanged(); 
    } 
} 

任何帮助将是有价值的

+0

有re_wrote AbstractTableModel上过代码示例,在我的个人资料是包括自动完成JComboBox作为XxxTableCellEditor的代码示例,使用它来编辑您的问题,并张贴SSCCE,否则所有东西都有短裤到黑暗 – mKorbel 2013-02-14 15:08:13

+0

对不起,我找不到代码示例:( – 2013-02-14 15:34:51

+0

阅读JTable API,然后按照指向“如何使用表”的Swing教程的链接查找包含组合框的表的示例。 – camickr 2013-02-14 16:23:33

回答

2

添加JComboBox中的行中的AbstractTableModel上,

  • 这是错误的想法,XxxTableModel只持有最后选定的(或intialized上第一次使用)值为String form(如果XxxComboBoxModel包含String形式的Item,如果存在Number,则模型仅包含一个munber)

  • 有分裂JComboBox as EditorXxxTableModel,那么这种想法的作品

  • 不要把JComboBoxXxxTableModel,遵循从Oracle教程

+0

+1正确分离模型和编辑器。也许可以覆盖'prepareEditor()'为一个特定的行? – trashgod 2013-02-14 16:48:51

+0

@trashgod hehehe同意了,但这是非常具体的问题( - :黑暗中射击: - )???, – mKorbel 2013-02-14 17:03:09