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


Автор: xber9 25.11.2007, 14:36
вот намисал маленкую модель таблици
Код

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package MysqlAndJava;
import javax.swing.table.*;

 class MyTableModel
    extends AbstractTableModel {
 String colunmNames[];
Object cells[][];
 public MyTableModel(String colunmNames[],  Object cells[][]){
//super();
 this.colunmNames=colunmNames;
 this.cells=cells;

 };
  public String getColumnName(int c){
    return colunmNames[c];}
  public Class getColumnClass(int c){
  return cells[0][c].getClass();
  }
public int getColumnCount(){return cells[0].length;}
  public int getRowCount(){return cells.length;}
  public Object getValueAt(int r, int c) {
return cells[r][c];
  }
  public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
  cells[rowIndex][columnIndex]=aValue;
  }
  public boolean isCellEditable(int rowIndex, int columnIndex) {
return true;
  }
  }



возникла проблема
надо сделать функцию вставляющую строку что то типа addRow(Object [])
вот как это реализовать?

и еще есть ли у таблицы свойство  сколько строк отображать без прокрутки?

Автор: LSD 25.11.2007, 18:53
Вместо массива лучше использовать коллекции, и реализовывать addRow(List c).

Автор: xber9 25.11.2007, 21:30
увы но я толком не понимаю
 smile 

Автор: can4ec 26.11.2007, 02:32
xber9:Это моя модель сущность Автор. В ней есть метод addAuthor() (тоже самое что addRow, токо мое название). Ты добавляешь данные в свою коллекцию и вызываешь метод перерисовки fireTableDataChanged();.
И используй коллекцию (как посоветовал тебе LSD) вместо массива так немного проще 

А насчет "есть ли у таблицы свойство  сколько строк отображать без прокрутки? " ты имеешь ввиду кол-во отображаемых в начале строк без прокрутки JScrollPane?

Код

public class AuthorTableModel extends AbstractTableModel 
{
    protected ArrayList data;
    protected String[] columnName = {"Name", "URL"};
    protected AbstractManager anAbstract;

    public AuthorTableModel(ArrayList data, AbstractManager anAbstract)
    {
        super();
        this.data = data;
        this.anAbstract = anAbstract;
    }

    public int getColumnCount()
    {
        return columnName.length;
    }

    public int getRowCount()
    {
        return data.size();
    }

    public Object getValueAt(int rowIndex, int columnIndex)
    {
        Author author = (Author) data.get(rowIndex);
        switch (columnIndex)
        {
            case 0:
                return author.getName();
            case 1:
                return author.getUrl();
            default:
                return null;
        }

    }

    public Author getObject(int rowIndex)
    {
        return (Author) data.get(rowIndex);
    }

    public String getColumnName(int columIndex)
    {
        return columnName[columIndex];
    }

    public void addAuthor(Author author)
    {

        data.add(author);                    
        this.fireTableDataChanged();
    }
}

Автор: xber9 26.11.2007, 21:17
что то нехватает ума 
как это сделать именно для моего примера
и еще в этц можель надо передовать именно массив
прошу smile  наколдуйте что нибуть

Добавлено через 12 минут и 35 секунд
Цитата(can4ec @  26.11.2007,  02:32 Найти цитируемый пост)
А насчет "есть ли у таблицы свойство  сколько строк отображать без прокрутки? " ты имеешь ввиду кол-во отображаемых в начале строк без прокрутки JScrollPane?

ага

Автор: xber9 27.11.2007, 18:54
up
подскажите плиз

Автор: dorogoyIV 28.11.2007, 11:10
загляни в исходники DefaultTableModel . 
там есть addRow(Vector v), addRow(Object [] rowData), convertToVector(Object [][] anArray) ...

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