Здравствуйте! При попытке вывода в форму выдается исключение - | Код | Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: PostavshikTableModel cannot be cast to javax.swing.table.TableModel at diplom1.PostavshikiFrame.showAllPostavshiki(PostavshikiFrame.java:131) at diplom1.PostavshikiFrame.jButtonShowAllPostavshikActionPerformed(PostavshikiFrame.java:108) at diplom1.PostavshikiFrame.access$000(PostavshikiFrame.java:28) at diplom1.PostavshikiFrame$2.actionPerformed(PostavshikiFrame.java:75) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) at java.awt.Component.processMouseEvent(Component.java:6134) at javax.swing.JComponent.processMouseEvent(JComponent.java:3265) at java.awt.Component.processEvent(Component.java:5899) at java.awt.Container.processEvent(Container.java:2023) at java.awt.Component.dispatchEventImpl(Component.java:4501) at java.awt.Container.dispatchEventImpl(Container.java:2081) at java.awt.Component.dispatchEvent(Component.java:4331) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4301) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3965) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3895) at java.awt.Container.dispatchEventImpl(Container.java:2067) at java.awt.Window.dispatchEventImpl(Window.java:2458) at java.awt.Component.dispatchEvent(Component.java:4331) at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
|
вот сам код модели - | Код | /* * To change this template, choose Tools | Templates * and open the template in the editor. */
package diplom1;
import java.util.Vector;
/** * * @author konstantin */ public class PostavshikTableModel {
private Vector postavshik;
//model pri sozdanii polychiaet spisok detalei public PostavshikTableModel(Vector postavshik) { this.postavshik=postavshik; }
PostavshikTableModel() {
}
public int getRowCount() { if(postavshik!=null) { return postavshik.size(); } return 0; }
public int getColumnCount() { return 6; }
public String getColomsName(int colomn) { String[] colNames={"ID","Naimenovanie","Adress","Director","Telefon","mail"}; return colNames[colomn]; }
// Vozvrashiaem dannye dlia opredelennoi stroki i stolbtsa public Object getValueAt(int rowIndex, int columnIndex) {
if(postavshik!=null) { Postavshik post= (Postavshik) postavshik.get(rowIndex);
switch(columnIndex) { case 0: return post.getId(); case 1: return post.getNaimenovanie(); case 2: return post.getAdress(); case 3: return post.getDirector(); case 4: return post.getTelefon(); case 5: return post.getMail();
} } return null; }
// dobavit detal- d razrabotke- smotri http://forum.vingrad.ru/forum/topic-250259.html /* public Vector setValueAt(Postavshik postavshik,int rowIndex,int colomnIndex) {
if(postavshik!=null) { Vector r=new Vector(); // Detali det=this.getDetail(rowIndex); postavshik.setId(postavshik.getId()); postavshik.setAdress(postavshik.getAdress()); postavshik.setDirector(postavshik.getDirector()); postavshik.setMail(postavshik.getMail()); postavshik.setNaimenovanie(postavshik.getNaimenovanie()); postavshik.setTelefon(postavshik.getTelefon()); r.add(postavshik);
return r; }
return null; } */
public boolean isEditable() {
return true; }
// metod kotoryi vozvrashaiet detal po nomery stroki
public Postavshik getPostavshik(int rowIndex) { if(postavshik!=null) { if(rowIndex<postavshik.size()) // vozvrashiaet nomer komponenta { return (Postavshik) postavshik.get(rowIndex); }
} return null; }
}
|
в форме -PostavshikiFrame | Код | private void showAllPostavshiki() throws SQLException {
if(jTablePostavshiki!=null) { jTablePostavshiki.getModel(); Collection<Postavshik> r=ms.getAllPostavshik(); //jTablePostavshiki.setModel(new PostavshikTableModel(new Vector(r) )); // ne rabotaet jTablePostavshiki.setModel(jTablePostavshiki.getModel()); jTablePostavshiki.setModel((TableModel) new PostavshikTableModel(new Vector(r))); JOptionPane.showMessageDialog(this, "showAllPostavshiki");
}
|
в форме вызывался метод getAllPostavshik из класса ManagementSystem- главного класса вот этот метод- | Код |
// polychit spisok vsex postavshikov public Collection<Postavshik> getAllPostavshik() throws SQLException { Collection<Postavshik> postavshiki=new ArrayList<Postavshik>(); Statement stmt=(Statement) con.createStatement(); ResultSet rs=stmt.executeQuery("SELECT ID,naimenovanie,adress,director,telefon,mail FROM izgotovitel "); //stmt= (Statement) con.createStatement(); //rs=stmt.executeQuery("SELECT ID,naimenovanie,adress,director,telefon,mail FROM izgotovitel "); while(rs.next()) { Postavshik postav=new Postavshik(); postavshiki.add(postav); // v kollectsiy postavshiki dobavit postavshka
} // esli soedinenie syshestvyet to zakryt-choby ne zabivat if(rs!=null) { rs.close(); } if(stmt!=null) { stmt.close(); } return postavshiki; }
|
если честно,не понимаю,что компилятору не нравится в моей модели...перерыл все что можно... ПС - я так понимаю,что при формировании таблицы компилятор берет мою модель(если я указал ему) и на основе ее формирует таблицу? Читаю книгу Java2 Том2 Тонкости программирования -так там в примере я не увидел прямого вызова методов из модели. я прав?поправьте,если заблуждаюсь. спасибо. Добавлено через 6 минут и 52 секундыда,компилятор в методе формы постоянно требует чтобы я привел в строке | Код | jTablePostavshiki.setModel((TableModel) new PostavshikTableModel(new Vector(r)));
|
мою модель таблицы к стандартной....если я это не делаю,выдает ошибку,а если уступаю его мольбам-то при вызове этого метода и выпадает исключение
|