Актуализирайте напълно данните на JTable всеки път, когато изпълнявам функция

Можете ли да ми помогнете да направя този код работещ? Създадох таблица, която променя данните си всеки път, когато се задейства функция. Кодът се състои от три класа.

Модел на маса

public class MyTableModel extends AbstractTableModel {


private static final long serialVersionUID = 1L;

private static String[] header = {"A", "B","C", "so on"};


public MyTableModel(){

}

RecordingList data = new RecordingList();

public void addData(RecordingList dataIn) {
    data=dataIn;
    this.fireTableDataChanged();

    }

@Override
public int getColumnCount() {
    return header.length; //length;
}

@Override
public int getRowCount() {
    return data.size();

}

@Override
public String getColumnName(int col) {
    return header[col];
}

@Override
public String getValueAt(int row, int col)
{
    Object[] rowSelected = data.getRecordingRow(row);

    return rowSelected[col].toString();

}

}

JTable

 public class DynamicTable extends JTable implements TableModelListener{

/**
 * 
 */
MyTableModel model;

private static final long serialVersionUID = 1L;

public DynamicTable() {

    model = new MyTableModel();
    initialize();

}

void initialize(){


        setFillsViewportHeight(true);
        setModel(model);
        getModel().addTableModelListener(this);
        setForeground(Color.BLACK);
        setShowGrid(true);
        setShowVerticalLines(true);
        setBackground(Color.WHITE);

        try {
            // 1.6+
            setAutoCreateRowSorter(true);
        } catch(Exception continuewithNoSort) {
    }
}
public void tableChanged(TableModelEvent e) {

    TableModel newModel = (TableModel)e.getSource();
    model=(MyTableModel)newModel;
    setModel(model);

    // Do something with the data...
}
}

Накрая имплементирах трети клас, който трябва да актуализира таблицата и модела

Това очевидно е наистина ГРЕШЕН подход и го поставям тук, за да ви дам представа какво се опитвам да постигна:

   RecordingList recordingList = cr.getResultQuery();

            MyTableModel newModel = new MyTableModel();
            newModel.addData(recordingList);

            TableModelEvent event= new TableModelEvent(newModel);

            DynamicTable dt =new DynamicTable() ;
            dt.tableChanged(event);

person QGA    schedule 19.02.2014    source източник
comment
как искахте да нулирате текущите данни   -  person mKorbel    schedule 19.02.2014


Отговори (1)


Ще създадете своя нов обект MyTableModel и след това просто ще го използвате, за да зададете текущо показвания модел на JTable. Това е. Ключът е получаването на препратката към текущо показаната JTable и правенето на това ще зависи от структурата на вашия код и какви препратки къде сте предали.

Не съм сигурен какво се опитвате да постигнете с TableModelEvent, но това не е необходимо.

Ако този отговор не е достатъчен, тогава ще трябва да създадете и публикувате вашата минимална, компилируема, изпълняваема примерна програма, за да можем да разберем по-добре вашия проблем.

person Hovercraft Full Of Eels    schedule 19.02.2014
comment
Изправен съм пред кошмар, защото класът, който създава модела на таблицата, е много вложен, по-скоро таблицата не е и не мога лесно да препратя обекта на таблицата в нея. Ето защо се опитвах да използвам интерфейс, който реализира събития - person QGA; 20.02.2014