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


Автор: Vassik 19.5.2006, 22:28
Вот такой вот вопрос, нужно мне отобразить данные в таблицу и как принято я решил создать свою модель, вот код

Код

public class DataTableModel extends javax.swing.table.DefaultTableModel{
  private String [] fName=new String[] {"Размер","Цена","Ед.изм","Влажность"};
  private Vector vctd=new Vector();
  Class [] calClass=new Class[] {String.class,String.class,String.class,String.class}; 
  public DataTableModel(Vector vct){
      super(vct.size(),4);
      this.vctd=vct;
  }
  public String getColumnName(int i){
      return fName[i];
  }
  public Class getColumnClass(int i){
      return calClass[i];
  }
  public Object getValueAt(int row,int col){
      DataEnum dte=new DataEnum();
      if(vctd.size()!=0){
      dte=(DataEnum)this.vctd.get(row);
      switch(col){
          case 0: return dte.getDimEn();
          case 1: return dte.getPriceEn();
          case 2: return dte.getDimEn();
          case 3: return dte.getDumpEn();
          default: return null;
      }
      }
      else{
          return new String("null");
      }
  }
}

в конструктор класса я передаю вектор который содержит объекты такого типа(каждый объект является строкой таблицы):
Код

public class DataEnum {
    private String dim;
    private String quan;
    private String price;
    private String dump;
    private int iden;
    private int idmat;
    private int idprod;
    /** Creates a new instance of DataEnum */
    public DataEnum(int iden,int idprod,int idmat,String dim,String quan,String price,String dump) {
        this.dim=dim;
        this.dump=dump;
        this.price=price;
        this.quan=quan;
        this.iden=iden;
        this.idmat=idmat;
        this.idprod=idprod;
    }
   public DataEnum(){
       this.dim="";
       this.dump="";
       this.price="";
       this.quan="";
       this.iden=0;
       this.idmat=0;
       this.idprod=0;
   }
   public int getIdenEn(){
       return this.iden;
   }
   public int getIdmatEn(){
       return this.idmat;
   }
   public int getIdprodEn(){
       return this.idprod;
   }
   public String getDimEn(){
       return this.dim;
   }
   public String getQuanEn(){
       return this.quan;
   }
   public String getPriceEn(){
       return this.price;
   }
   public String getDumpEn(){
       return this.dump;
   }
}

и потом значение этого вектора я присваивую вектору класса данной модели, так вот почему то когда происходит вызов функции getValueAt(int row,int col) ничего в этом векторе уже не лижит, почему так не пойму, может кто подскажет??? 

Автор: w1nd 19.5.2006, 22:54
Вероятно, где-то в другом месте вектор очищается. Попробуйте создать копию - вместо 
Код
this.vctd=vct;
 написать 
Код
this.vctd=new Vector(vct);
.  

Автор: Vassik 19.5.2006, 23:32
Цитата(w1nd @ 19.5.2006,  22:54)
Вероятно, где-то в другом месте вектор очищается. Попробуйте создать копию - вместо 
Код
this.vctd=vct;
 написать 
Код
this.vctd=new Vector(vct);
.

Твой вариант работает, спасибо за помощьsmile 

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