Hello,
ich bin gerade beim programmieren einer Filmverwaltung.
Allerdings hänge ich jetzt ein bisschen... Folgendes Problem, ich sage im Menü - Neuen Film hinzufügen, Trage die Daten zum Film etc. in die Maske ein und sage hinzufügen -- bis dahin klappt alles wunderbar..
Jetzt der Knackpunkt... Wen ich den FIlm eingetragen habe, möchte ich natürlich wieder zum Anfang der Filmverwaltung, wo die Tabelle mit den Filmen und deren Detailansicht angezeigt wird.
Ich dachte mir, das kriege ich hin, indem ich das Panel, wo ich die Filmdaten eingetragen habe, auf false setze und die anderen beiden Panels auf true.. Allerdings machts dann buuum :-(
Ich bekomme folgende Exception:
Also ich deute diese Exception so, dass er einen null Wert irgendwo hat. Ich übergebe die beiden Panels, die ich nachher auf true setze über den Konstruktor meines Panels zum Filmeintragen.
Dadurch stehe ich doch eigentlich in verbindung mit den beiden Panels, oder nicht???
Und sobald ich dann den Button klicke, soll er alles Daten in eine DB schreiben(klappt wunderbar) und dann das aktuelle Panel.setVisible(false) setzen(klappt auch).. Aber mit dem wieder dartstellen der anderen beiden Panels hat er ein problem. Wieso sagt er, er habe einen null Wert?? Ich habe ihm doch die passenden Panels durch den Konstruktor übergeben.. Oder verstehe ich das falsch? Bin immerhin noch nen kleiner Anfänger ;-)
Hier mal eben der Code, vom Button...
Dann gebe ich euch noch den Code mit, wo meine GUI zusammengeflickt wird... Eventuell ist der noch hilfreich... um das Problem zu lösen...
Ich habe auch schon probiert, ob es eventuell mit repaint() klappt, aber leider auch eine Fehlanzeige...
Gruß
Ollek
ich bin gerade beim programmieren einer Filmverwaltung.
Allerdings hänge ich jetzt ein bisschen... Folgendes Problem, ich sage im Menü - Neuen Film hinzufügen, Trage die Daten zum Film etc. in die Maske ein und sage hinzufügen -- bis dahin klappt alles wunderbar..
Jetzt der Knackpunkt... Wen ich den FIlm eingetragen habe, möchte ich natürlich wieder zum Anfang der Filmverwaltung, wo die Tabelle mit den Filmen und deren Detailansicht angezeigt wird.
Ich dachte mir, das kriege ich hin, indem ich das Panel, wo ich die Filmdaten eingetragen habe, auf false setze und die anderen beiden Panels auf true.. Allerdings machts dann buuum :-(
Ich bekomme folgende Exception:
Java:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at de.mymoviecollection.view.MyMCNewFilmPanel$InsertButton.runAction(MyMCNewFilmPanel.java:263)
at de.mymoviecollection.view.MyMCButton.actionPerformed(MyMCButton.java:23)
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.plaf.basic.BasicButtonListener.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)
Also ich deute diese Exception so, dass er einen null Wert irgendwo hat. Ich übergebe die beiden Panels, die ich nachher auf true setze über den Konstruktor meines Panels zum Filmeintragen.
Java:
public class MyMCNewFilmPanel extends JPanel {
DBOperations dbOperation;
MyMCTablePanel table;
MyMCDetailTabPane tabPane;
public MyMCNewFilmPanel(DBOperations dbOperation, MyMCDetailTabPane tabPane, MyMCTablePanel tablePanel){
this.tabPane = tabPane;
this.table = tablePanel;
this.dbOperation = dbOperation;
Dadurch stehe ich doch eigentlich in verbindung mit den beiden Panels, oder nicht???
Und sobald ich dann den Button klicke, soll er alles Daten in eine DB schreiben(klappt wunderbar) und dann das aktuelle Panel.setVisible(false) setzen(klappt auch).. Aber mit dem wieder dartstellen der anderen beiden Panels hat er ein problem. Wieso sagt er, er habe einen null Wert?? Ich habe ihm doch die passenden Panels durch den Konstruktor übergeben.. Oder verstehe ich das falsch? Bin immerhin noch nen kleiner Anfänger ;-)
Hier mal eben der Code, vom Button...
Java:
class InsertButton extends MyMCButton {
public InsertButton() {
super("Hinzufügen", IconCache.getIcon("add24x24.png"));
}
@Override
public void runAction() {
Movie newMovie = new Movie();
ArrayList<Movie> insertMovieList = new ArrayList<Movie>();
// hier steht noch nen bisschen mehr code.... normalerweise
insertMovieList.add(newMovie);
dbOperation.insertMovie(insertMovieList);
/* disconnect Database */
DBConnection.disconnectDB();
MyMCNewFilmPanel.this.setVisible(false); ==> das klappt
tabPane.setVisible(true); ==> da meckert er
}
}
Dann gebe ich euch noch den Code mit, wo meine GUI zusammengeflickt wird... Eventuell ist der noch hilfreich... um das Problem zu lösen...
Java:
public MyMCGUI(MyMCTableModel thisModel, DBOperations dbOperation){
super("My Movie Collection");
/* initialize JTable with TableModel */
MyMCTable table = new MyMCTable(thisModel);
this.setIconImage(IconCache.getIcon("mymclogo.png").getImage());
this.setPreferredSize(new Dimension(900, 600));
this.setResizable(false);
setLayout( new BorderLayout());
/* add JMenuBar */
MyMCMenu menu = new MyMCMenu();
this.setJMenuBar(menu);
/* add MyMCNewFilmPanel */
pNewFilm = new MyMCNewFilmPanel(dbOperation, tpFilm, pTable);
this.add(BorderLayout.CENTER, pNewFilm);
/* add MyMCDetailPanel */
pFilmDetail = new MyMCFilmPanel(table);
pActDir = new MyMCDetailPanel();
tpFilm = new MyMCDetailTabPane(pFilmDetail, pActDir);
this.add(BorderLayout.EAST, tpFilm);
/* add MyMCTablePanel */
pTable = new MyMCTablePanel(table);
this.add(BorderLayout.WEST, pTable);
pack();
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLocationRelativeTo(null);
menu.getAllPanelsFromGUI(pTable, tpFilm, pNewFilm);
}
}
Ich habe auch schon probiert, ob es eventuell mit repaint() klappt, aber leider auch eine Fehlanzeige...
Gruß
Ollek