2017-01-11 38 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我沒有讀你的答案很好! :)現在它爲我工作。 –