2017-01-11 40 views
-1

我想使用for循环在JTable列中显示数组的值。将数组存储在JTable列中

我的代码如下所示:

public class MigTable extends FormsTableModel implements XmlInterface { 

    private Element srcDoc = null; 
    private String string = null; 
    private ArrayList<Integer>data =new ArrayList<Integer>(Arrays.asList(20,10,100)); 

    public MigTable(Element element, String string) { 
     super(element,string); 

    } 

    @Override 
    public Class<?> getColumnClass(int columnIndex) { 
     switch (columnIndex){ 
      case 0: return super.getColumnClass(0); 
      case 1: return super.getColumnClass(1); 
      case 2: return Integer.class; 
      default: return Object.class; 
     } 
    } 

    @Override 
    public int getColumnCount() { 
     return 3; 
    } 

    @Override 
    public String getColumnName(int columnIndex) { 
     switch(columnIndex){ 
      case 0: return super.getColumnName(0); 
      case 1: return super.getColumnName(1); 
      case 2: return "status"; 
     } 

     return null; 
    } 


    @Override 
    public Object getValueAt(int rowIndex, int columnIndex) { 
      // Here I'm getting the values 
      if (columnIndex==2){ 
       // I would like to do it here so that at column Index 2 has the datas 
       //from the array list 20 10 100 
      } 
     } 
     return super.getValueAt(rowIndex, columnIndex); 
    } 

    @Override 
    public boolean isCellEditable(int i, int i2) { 
     // TODO Implement this method 
     return false; 
    } 

    @Override 
    public void setValueAt(Object aValue, int rowIndex, int columnIndex) { 
     if (rowIndex > getColumnName(columnIndex).length()) 
      throw new IllegalArgumentException ("" + rowIndex); 
     super.setValueAt(aValue, rowIndex, columnIndex); 
    } 
} 

感谢您的帮助

+1

也许你可以修复你的缩进,如果你要求人们尝试阅读你的代码。 – khelwood

+0

对不起Khelwood再来!我没有明白你的意思?你想在我的代码中理解什么?给我一个例子,我会纠正其余的 –

+0

什么是你的继承链?例如,“FormsTableModel”扩展了“DefaultTableModel”或“AbstractTableModel”吗? –

回答

0

这是什么意思?

@Override 
public Object getValueAt(int rowIndex, int columnIndex) { 
    // here i am getting values 
    if (columnIndex==2){ 
     // i would like to do it here so that at column Index 2 has the datas from the array list 20 10 100 } 
     if (rowIndex < data.size()) { 
      return data.get(rowIndex); 
     } else { 
      return null; 
     } 
    } 
    return super.getValueAt(rowIndex, columnIndex); 
} 

(我没有测试)

编辑:另一种选择,理所当然地认为你的超能处理它,把数据存在。例如,可以使用DefaultTableModel。把几行额外的在构造函数:

public MigTable(Element element, String string) { 
    super(element,string); 
    for (int index = 0; index < data.size(); index++) { 
     setValueAt(data.get(index), index, 2); 
    } 
} 

有了这个,你不必重写getValueAt()可言。

+0

thx您的回复!但并非确切!我有一个JTable 3列和3行!我alredeay有第1和第2列的数据!现在在第3列(columnindex 2)我想把一个数组的值在那。数组声明为int [] array = new int [] {100,30,60}; –

+0

我不明白你想要什么和我给你什么之间的区别。前两列的数据是否在超类中,因此'super.getValueAt(rowIndex,columnIndex)'会得到它们? –

+0

thx我没有读你的答案很好! :)现在它为我工作。 –