Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: GUI и Java FX приложения > Добавление столбца в TableModel


Автор: Hopeless 25.10.2007, 14:28
Код

package diploma.components;

import java.util.ArrayList;

import javax.swing.table.AbstractTableModel;

public class DataTableModel extends AbstractTableModel {
    private ArrayList row = new ArrayList();

    public DataTableModel(String Data) {
        if (Data.equals("")) throw new ExceptionInInitializerError("Constructor in "+getClass().getName()+" cannot receive \"\" value");
        try {
            String Temp[] = Data.split(";");
            ArrayList column = new ArrayList();
            for (int i = 0; i < Temp.length; i++) {
                if (!Temp[i].equals(";") && (Temp[i].indexOf("\n") == -1)) {
                    column.add(Temp[i]);
                }
                if (Temp[i].indexOf("\n") != -1) {
                    column.add(Temp[i].substring(0, Temp[i].indexOf("\n")));
                    row.add(column);
                    column = new ArrayList();
                    column.add(Temp[i].substring(Temp[i].indexOf("\n") + 1));
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * Returns the number of columns in the model.
     *
     * @return the number of columns in the model
     * @todo Implement this javax.swing.table.TableModel method
     */
    public int getColumnCount() {
        return ((ArrayList) row.get(0)).size();
    }

    /**
     * Returns the number of rows in the model.
     *
     * @return the number of rows in the model
     * @todo Implement this javax.swing.table.TableModel method
     */
    public int getRowCount() {
        return row.size();
    }

    public void addColumn() {
        fireTableStructureChanged();
        for (int i = 0; i < getRowCount(); i++) {
            ((ArrayList) (row.get(i))).add("dfr");
        }
        this.fireTableDataChanged();
    }
    /**
     * Returns the value for the cell at <code>columnIndex</code> and
     * <code>rowIndex</code>.
     *
     * @param rowIndex the row whose value is to be queried
     * @param columnIndex the column whose value is to be queried
     * @return the value Object at the specified cell
     * @todo Implement this javax.swing.table.TableModel method
     */
    public Object getValueAt(int rowIndex, int columnIndex) {
        System.out.println(((ArrayList) (row.get(rowIndex))).get(columnIndex).
                           toString());
        return ((ArrayList) (row.get(rowIndex))).get(columnIndex);
    }

    public String getData() {
        String Data = "";
        for (int i = 0; i < getRowCount(); i++) {
            for (int j = 0; j < getColumnCount(); j++) {
                Data += ((ArrayList) (row.get(i))).get(j).toString();
                if (j != getColumnCount() - 1) {
                    Data += ";";
                }
            }
            Data += "\n";
        }
        return Data;
    }
    
}


Вызываю код
Код

try{
            DataTableModel datatablemodel = (DataTableModel) (
                    getselectedexternalpanel().jTable2.getModel());
            datatablemodel.addColumn();

            datatablemodel.fireTableStructureChanged();
            
            getselectedexternalpanel().jTable2.setModel(datatablemodel);
            getselectedexternalpanel().jTable2.revalidate();
            getselectedexternalpanel().jTable2.repaint();
        }catch(Exception ex){
            ex.printStackTrace();
        }

который почему-то не добавляет столбец в jTable2 .

Проблема уже решена. Здесь представлен работающий код. Простите.. Можно удалить тему.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)