2017-01-11 7 views
-1

Я хотел бы отобразить значения массива в столбце JTable, используя цикл for.Хранить массив в столбце 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

Извините, что Хелвуд пришел снова! Я не понял, что вы имели в виду? что бы вы хотели понять в моем кодексе! дайте мне пример, и я исправлю остальных –

+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); 
} 

(я не проверял)

EDIT: Другой вариант, как должное, что ваш суперкласса может справиться с этим, поставив там данные. 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 строками! i alredeay имеют данные для столбцов 1 и 2! теперь в столбце 3 (columnindex 2) я хотел бы поместить значения массива в это. Массив объявляется как int [] array = new int [] {100, 30, 60}; –

+0

Я не понимаю разницы между тем, что вы хотите, и тем, что я вам даю. Данные для первых двух столбцов, находятся ли они в суперклассе, поэтому 'super.getValueAt (rowIndex, columnIndex)' получит их? –

+0

thx я не читал ваш ответ очень хорошо! :) Это работает для меня сейчас. –

 Смежные вопросы

  • Нет связанных вопросов^_^