Hi,
Ich bin grad am Java lernen (und das auf Englisch, verzeiht mir also gelegentliche Terminologiefehler...) und muss für meine Vorlesung in ein paar Tagen ein Programmierprojekt abliefern. Da nun hab ich folgendes Problem, dass sich auch nach längerem googlen und Sun-Webseite lesen irgendwie nicht lösen will:
Mein Benutzerinterface ist mit einem CardLayout realisiert. In der void main rufe ich die Initialisierung auf. In der entsprechenden void init() weise ich das CardLayout zu und initialisiere die einzelnen Karten per build:
public void init()
{
container.setLayout( cl );
builderstenDialog();
buildzweitenDialog();
container.add( "Start", erstesPanel );
container.add( "Check", zweitesPanel );
cl.show( container, "Start" );
}
Die einzelnen Karten sind dann definiert via
void builderstenDialog()
{ JPanel erstesPanel = new JPanel();
/*Erstellung der restlichen GUI Komponenten für diese Karte*/
}
etc.
Soweit alles schön. Wenn ich das Programm starte, erscheint brav die erste Karte. Auf der habe ich eine Liste mit Namen, aus der der User per Mausklick einen aussucht. Der ActionHandler für diesen Click setzt eine Merkervariable auf die Indexnummer des ausgewählten Namens und ruft dann per cl.show( container, "Check" ); die zweite Karte auf. Das funktioniert auch noch prima.
Aber nu: Auf der zweiten Karte versuche ich über den Merker und die darin gespeicherte Indexnummer den Namen aus der ersten Karte darzustellen zusammen mit Adressdaten die ich ebenfalls über die Indexnummer reinhole.
Und das funktioniert nicht. Es zeigt immer die Daten des ersten Namens aus der Liste von Karte 1 an.
Erst dachte ich, das mein ActionListener einfach den Merker nicht auf die Indexnummer umstellt. Das ist aber nicht der Fall (getestet indem ich anstelle der zweiten Karte eine Messagebox aufgerufen habe, die den Wert des Merkers anzeigt.) Der Merker hat nach dem Klick in Karte 1 die richtige Indexnummer als Wert.
Soweit ich das im Moment verstehe, ist mein Problem, dass die einzelnen Karten mittels build bei Start des Programms erstellt werden, wenn mein Indexnummern-Merker noch gleich Null ist (ich initialisiere ihn im Constructor auf =0).
Ich müsste also in meinem ActionListener auf der ersten Karte einen Befehl einfügen, der die nächste Karte aktualisiert bevor sie angezeigt wird, schlicht damit die Karte mit dem neuen Index-Merker erstellt wird und die passenden Daten angezeigt werden.
Meine erste Idee war, einfach den buildzweitenDialog-Befehl zu wiederholen. Das funktioniert aber leider nicht. So, was nun?
Sorry für den umfangreichen Roman, aber ich hab im Moment keinen Plan mehr wie weiter oder wo suchen. Falls ich irgendwas wichtiges vergessen hab, bitte rückfragen. Ich wollte Euch nicht gleich im ersten Anlauf mein ganzes chaotisches Codemonster an den Hals werfen...
Ich wär dankbar für einen Tip oder einen Schubs in die richtige Richtung in der ich eine Lösung finden kann.
Thanks Solera
Ich bin grad am Java lernen (und das auf Englisch, verzeiht mir also gelegentliche Terminologiefehler...) und muss für meine Vorlesung in ein paar Tagen ein Programmierprojekt abliefern. Da nun hab ich folgendes Problem, dass sich auch nach längerem googlen und Sun-Webseite lesen irgendwie nicht lösen will:
Mein Benutzerinterface ist mit einem CardLayout realisiert. In der void main rufe ich die Initialisierung auf. In der entsprechenden void init() weise ich das CardLayout zu und initialisiere die einzelnen Karten per build:
public void init()
{
container.setLayout( cl );
builderstenDialog();
buildzweitenDialog();
container.add( "Start", erstesPanel );
container.add( "Check", zweitesPanel );
cl.show( container, "Start" );
}
Die einzelnen Karten sind dann definiert via
void builderstenDialog()
{ JPanel erstesPanel = new JPanel();
/*Erstellung der restlichen GUI Komponenten für diese Karte*/
}
etc.
Soweit alles schön. Wenn ich das Programm starte, erscheint brav die erste Karte. Auf der habe ich eine Liste mit Namen, aus der der User per Mausklick einen aussucht. Der ActionHandler für diesen Click setzt eine Merkervariable auf die Indexnummer des ausgewählten Namens und ruft dann per cl.show( container, "Check" ); die zweite Karte auf. Das funktioniert auch noch prima.
Aber nu: Auf der zweiten Karte versuche ich über den Merker und die darin gespeicherte Indexnummer den Namen aus der ersten Karte darzustellen zusammen mit Adressdaten die ich ebenfalls über die Indexnummer reinhole.
Und das funktioniert nicht. Es zeigt immer die Daten des ersten Namens aus der Liste von Karte 1 an.
Erst dachte ich, das mein ActionListener einfach den Merker nicht auf die Indexnummer umstellt. Das ist aber nicht der Fall (getestet indem ich anstelle der zweiten Karte eine Messagebox aufgerufen habe, die den Wert des Merkers anzeigt.) Der Merker hat nach dem Klick in Karte 1 die richtige Indexnummer als Wert.
Soweit ich das im Moment verstehe, ist mein Problem, dass die einzelnen Karten mittels build bei Start des Programms erstellt werden, wenn mein Indexnummern-Merker noch gleich Null ist (ich initialisiere ihn im Constructor auf =0).
Ich müsste also in meinem ActionListener auf der ersten Karte einen Befehl einfügen, der die nächste Karte aktualisiert bevor sie angezeigt wird, schlicht damit die Karte mit dem neuen Index-Merker erstellt wird und die passenden Daten angezeigt werden.
Meine erste Idee war, einfach den buildzweitenDialog-Befehl zu wiederholen. Das funktioniert aber leider nicht. So, was nun?
Sorry für den umfangreichen Roman, aber ich hab im Moment keinen Plan mehr wie weiter oder wo suchen. Falls ich irgendwas wichtiges vergessen hab, bitte rückfragen. Ich wollte Euch nicht gleich im ersten Anlauf mein ganzes chaotisches Codemonster an den Hals werfen...

Ich wär dankbar für einen Tip oder einen Schubs in die richtige Richtung in der ich eine Lösung finden kann.
Thanks Solera