Προς το περιεχόμενο

Προβλημα με vectors σε JΤable


kapamarous

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλημέρα σας.

 

Οποιος έχει όρεξη να βοηθησει ας δει λιγο των κωδικα παρακατω.Την συγκεκριμενη class την καλω σε αλλη κλαση που δημιουργω ενα jtable με το model αυτο.Όταν δινω εντολη για εμφανιση του jtable μεσα σε ενα jScrollPane ανοιγει το παραθυρο (jframe)

και δεν δειχνει τιποτα .Exception δεν βγαζει .Απλα ανοιγει το παραθυρο και δεν δειχνει τιποτα.

 

>
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.util.Vector;
import javax.swing.table.AbstractTableModel;

/**
*
* @author jeronimo
*/
public class MySqlTableModel extends AbstractTableModel {

   Connection connection;
   Vector rows = null, data = null,columns=null;
  
   String username_desc = null;
   String query =
        "SELECT products.product_id,products.model,categories.description,products.code,"
           + "products.price,products.description,companies.companies_id "
           + "FROM companies,categories,products WHERE products.category_id=categories.categories_id "
           + "AND products.company_id = companies.companies_id";

   public MySqlTableModel(Connection conne, String username_description) {

       connection = conne;
       username_desc = username_description;
       initVectors();
   }

   public void initVectors() {
       if (username_desc == "admin_user") {
           try {
               Statement state = connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
               ResultSet rs = state.executeQuery(query);
               ResultSetMetaData rsMeta = rs.getMetaData();
               int metaSize = rsMeta.getColumnCount();
               columns = new Vector(metaSize);

               for (int i = 1; i <= metaSize; i++) {
                   columns.addElement(rsMeta.getColumnName(i));
               }
              
               data = new Vector();


               boolean next = rs.next();
               while (next) {
                   rows = new Vector(metaSize);
                   for (int i = 1; i <= metaSize; i++) {

                       rows.addElement(String.valueOf(rs.getObject(i)).toString());
                   }
                   data.addElement(rows);
               }
               rs.close();
               state.close();

           } catch (Exception ex) {
               ex.printStackTrace();
           }
       } else {
           javax.swing.JOptionPane.showMessageDialog(null, "User is simple  user");
       }
   }

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

   public int getColumnCount() {
       return columns.size();
   }

   public Object getValueAt(int rowIndex, int columnIndex) {
       Vector v = (Vector) rows.get(rowIndex);
       return v.get(columnIndex);
   }

   public String getColumnName(int column) {
       return (String) columns.get(column);
   }

   public boolean isCellEditable(int rowIndex, int columnIndex) {
       return true;
   }

   public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
       rows.set(rowIndex, aValue);
       fireTableCellUpdated(rowIndex, columnIndex);
   }

   public Class getColumnClass(int c) {
       return getValueAt(0, c).getClass();
   }
}

Επισκέπτης
Δημοσ.

table.setModel(MySqlTableModel ) έχεις κάνει;

Δημοσ.
table.setModel(MySqlTableModel ) έχεις κάνει;

 

εχω κανει το εξης

 

JTable myTable = new JTable(MyModel);

 

τωρα ομως μετα απο επεξεργασια που εκανα μου πεταει ενα exception .

java.lang.ClassCastException: java.lang.Integer cannot be cast to java.util.Vector

 

αυτο το exception ου το πεταει τωρα στην μεθοδο

 

public Object getValueAt(int rowIndex, int columnIndex) {

 

Vector v = (Vector)rows.get(rowIndex);

return v.elementAt(columnIndex);

 

}

 

δεν ξερω τι συμβαινει πραγματικα.

Επισκέπτης
Δημοσ.

>
public Object getValueAt(int nRow, int nCol) {
	if (nRow < 0 || nRow>=getRowCount())
	return "";
	YourDataRowClass row = (YourDataRowClass)this.data.elementAt(nRow);
	switch (nCol) {
		//edw bazeis na epistrefei thn kathe stili upcasted ws Object
		case 0: return row.column1;

		case 1: return row.column2;
		...
		case (n): return row.columnn;
	}
	return "";
}

 

επίσης, θες JTable myTable = new JTable(MySqlTableModel);

το "MyModel" που το βρήκες;

Δημοσ.
>
public Object getValueAt(int nRow, int nCol) {
	if (nRow < 0 || nRow>=getRowCount())
	return "";
	YourDataRowClass row = (YourDataRowClass)this.data.elementAt(nRow);
	switch (nCol) {
		//edw bazeis na epistrefei thn kathe stili upcasted ws Object
		case 0:
		case 1:
		...
		case (n)
	}
	return "";
}

 

 

Eυχαριστω για την βοθεια natural_sgf αλλα το λαθος ητανε λογικο .Εγω στο συγκεκριμενο function αναφερομουνα στο vector(rows) που "μαζευε" τις τιμες απο τις στηλες και οχι στο vector(data) το οποιο "μαζευε" τις τιμες απο το vector(rows).τωρα ειναι ολα οκ .

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...