kapamarous Δημοσ. 16 Ιουλίου 2010 Δημοσ. 16 Ιουλίου 2010 Καλημέρα σας. Οποιος έχει όρεξη να βοηθησει ας δει λιγο των κωδικα παρακατω.Την συγκεκριμενη 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(); } }
Επισκέπτης Δημοσ. 16 Ιουλίου 2010 Δημοσ. 16 Ιουλίου 2010 table.setModel(MySqlTableModel ) έχεις κάνει;
kapamarous Δημοσ. 16 Ιουλίου 2010 Μέλος Δημοσ. 16 Ιουλίου 2010 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); } δεν ξερω τι συμβαινει πραγματικα.
Επισκέπτης Δημοσ. 16 Ιουλίου 2010 Δημοσ. 16 Ιουλίου 2010 > 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" που το βρήκες;
kapamarous Δημοσ. 16 Ιουλίου 2010 Μέλος Δημοσ. 16 Ιουλίου 2010 > 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).τωρα ειναι ολα οκ .
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.