Pomóżcie, program na zaliczenie i nie wiem, gdzie leży błąd [glowa]
Projekt wygląda następująco :
W pakiecie domyślnym mam klasę Main:
import java.awt.EventQueue;
import beans.*;
import layout.*;
import modules.*;
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
OknoGlowne o = new OknoGlowne();
}
});
}
}
W pakiecie "beans" przechowuję klasę Samochod:
package beans;
import java.sql.ResultSet;
import java.util.ArrayList;
import modules.Modul;
public class Samochod {
private int id;
private String marka;
private String model;
private double minSpalanieMiasto;
private double maxSpalanieMiasto;
private double spalanieTrasa;
private int czesci;
public void setID(int id){
this.id=id;
}
public void setMarka(String marka){
this.marka=marka;
}
public void setModel(String model){
this.model=model;
}
public void setMinSpalanieMiasto(double minSpalanieMiasto){
this.minSpalanieMiasto=minSpalanieMiasto;
}
public void setMaxSpalanieMiasto(double maxSpalanieMiasto){
this.maxSpalanieMiasto=maxSpalanieMiasto;
}
public void setSpalanieTrasa(double spalanieTrasa){
this.spalanieTrasa=spalanieTrasa;
}
public void setCzesci(int czesci){
this.czesci=czesci;
}
public int getId(){
return this.id;
}
public String getMarka(){
return marka;
}
public String getModel(){
return model;
}
public double getMinSpalanieMiasto(){
return minSpalanieMiasto;
}
public double getMaxSpalanieMiasto(){
return maxSpalanieMiasto;
}
public double getSpalanieTrasa(){
return spalanieTrasa;
}
public int getCzesci(){
return czesci;
}
public String UsunSamochod(){
Modul o = new Modul();
String Cad = "delete from samochod where id="+this.getId()+"'";
return o.Execute(Cad);
}
public String NowySamochod(){
Modul o = new Modul();
String Cad = "insert into samochod values ('" + this.id+", '" + this.marka +"', "+"'"+ this.model + "', " +"'"+ this.minSpalanieMiasto +"', " + "'" + this.maxSpalanieMiasto + "', " +"'"+ this.spalanieTrasa + "', " + "'" + this.czesci + "')";
return o.Execute(Cad);
}
public String EdytujSamochod(){
Modul o = new Modul();
String Cad = "update samochod set ('" + this.marka +"', "+"'"+ this.model + "', " +"'"+ this.minSpalanieMiasto +"', " + "'" + this.maxSpalanieMiasto + "', " +"'"+ this.spalanieTrasa + "', " + "'" + this.czesci + "' where id ='"+this.getId()+"'";
return o.Execute(Cad);
}
public ArrayList<Samochod>ListaSamochodow(){
ArrayList lista2 = new ArrayList();
try{
Modul o = new Modul();
ResultSet tabela = o.Write("select * from samochod");
Samochod jakis;
while(tabela.next()){
jakis=new Samochod();
jakis.setID(tabela.getInt("id"));
jakis.setMarka(tabela.getString("marka"));
jakis.setModel(tabela.getString("model"));
jakis.setMinSpalanieMiasto(tabela.getDouble("minSpalanieMiasto"));
jakis.setMaxSpalanieMiasto(tabela.getDouble("maxSpalanieMiasto"));
jakis.setSpalanieTrasa(tabela.getDouble("spalanieTrasa"));
jakis.setCzesci(tabela.getInt("czesci"));
lista2.add(o);
}
}catch(Exception e){
javax.swing.JOptionPane.showMessageDialog(null, e.getMessage());
}
return lista2;
}
}
W pakiecie modules przechowuję klasę Modul:
</image>package modules;
import java.sql.*;
public class Modul {
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc//localhost:3306/baza1";
String user = "root";
String pwd = "kwiatek";
public ResultSet Write (String Cad){
try{
Class.forName(driver).newInstance();
Connection cn=DriverManager.getConnection(url,user,pwd);
PreparedStatement da = cn.prepareStatement(Cad);
ResultSet tbl = da.executeQuery();
return tbl;}
catch (Exception e){
javax.swing.JOptionPane.showMessageDialog(null, e.getMessage());
return null;
}
}
public String Execute (String Cad){
try{
Class.forName(driver).newInstance();
Connection cn=DriverManager.getConnection(url,user,pwd);
PreparedStatement da = cn.prepareStatement(Cad);
int r = da.executeUpdate();
return "Se afectaron "+r+" filas ";}
catch (Exception e){
javax.swing.JOptionPane.showMessageDialog(null, e.getMessage());
return "Error"+e.getMessage();
}
}
}
W klasie layout mam okno główne, w którym po wciśnięciu menu pokazuje się OknoSamochod.
Okno Główne:
package layout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class OknoGlowne extends JFrame{
private JMenuBar menubar;
private JMenu menuSamochod;
private JMenu menuOsoba;
private JMenuItem menuItemSamochod;
private JMenuItem menuItemOsoba;
public OknoGlowne(){
setTitle("Utrzymanie samochodu");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(500, 200, 500, 500);
setVisible(true);
setResizable(false);
setLayout(null);
// tworzenie menu:
menubar = new JMenuBar();
setJMenuBar(menubar);
menuSamochod = new JMenu("Samochod");
menubar.add(menuSamochod);
menuOsoba = new JMenu("Osoba");
menubar.add(menuOsoba);
menuItemSamochod = new JMenuItem("Baza danych samochodów");
menuSamochod.add(menuItemSamochod);
menuItemSamochod.addActionListener(new ActionDodajSamochod());
menuItemOsoba = new JMenuItem("Baza danych osób");
menuOsoba.add(menuItemOsoba);
}
static class ActionDodajSamochod implements ActionListener{
public void actionPerformed(ActionEvent e) {
OknoSamochod s = new OknoSamochod();
}
}
}
oknoSamochod:
package layout;
import java.util.ArrayList;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import beans.*;
public class OknoSamochod extends JFrame {
private JTable tabela_glowna;
public OknoSamochod(){
setSize(700,500);
setLayout(null);
setVisible(true);
setResizable(false);
ListaSamochodow();
}
public void ListaSamochodow(){
DefaultTableModel tabela = new DefaultTableModel();
Samochod o = new Samochod();
ArrayList<Samochod> lista2 = new ArrayList();
lista2 = o.ListaSamochodow();
tabela.addColumn("id");
tabela.addColumn("marka");
tabela.addColumn("model");
tabela.addColumn("minSpalMiasto");
tabela.addColumn("maxSpalMiasto");
tabela.addColumn("spalanieTrasa");
tabela.addColumn("czesci");
tabela.setRowCount(lista2.size());
int i = 0;
for(Samochod x: lista2){
tabela.setValueAt(x.getId(),i, 0);
tabela.setValueAt(x.getMarka(), i, 0);
tabela.setValueAt(x.getModel(), i, 0);
tabela.setValueAt(x.getMinSpalanieMiasto(), i, 0);
tabela.setValueAt(x.getMinSpalanieMiasto(), i, 0);
tabela.setValueAt(x.getSpalanieTrasa(), i, 0);
tabela.setValueAt(x.getCzesci(), i, 0);
i++;
}
tabela_glowna.setModel(tabela);
}
}
Kompiluje się OK, jednak przy włączeniu oknoSamochod, wyskakuje błąd:
> Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: modules.Modul cannot be cast to beans.Samochod
> at layout.OknoSamochod.ListaSamochodow(OknoSamochod.java:36)
> at layout.OknoSamochod.<init>(OknoSamochod.java:18)
> at layout.OknoGlowne$ActionDodajSamochod.actionPerformed(OknoGlowne.java:46)
> at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
> at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
> at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
> at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
> at javax.swing.AbstractButton.doClick(Unknown Source)
> at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
> at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
> at java.awt.Component.processMouseEvent(Unknown Source)
> at javax.swing.JComponent.processMouseEvent(Unknown Source)
> at java.awt.Component.processEvent(Unknown Source)
> at java.awt.Container.processEvent(Unknown Source)
> at java.awt.Component.dispatchEventImpl(Unknown Source)
> at java.awt.Container.dispatchEventImpl(Unknown Source)
> at java.awt.Component.dispatchEvent(Unknown Source)
> at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
> at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
> at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
> at java.awt.Container.dispatchEventImpl(Unknown Source)
> at java.awt.Window.dispatchEventImpl(Unknown Source)
> at java.awt.Component.dispatchEvent(Unknown Source)
> at java.awt.EventQueue.dispatchEvent(Unknown Source)
> at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
> at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
> at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
> at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
> at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
> at java.awt.EventDispatchThread.run(Unknown Source)
Problem zapewne pojawia się w metodzie ListaSamochodzow() w klasie oknoSamochodu.
Nie wiem, o co chodzi.
W bazie danych mam kilka rekordów, ale one nie są wyświetlane...