klar , sollte eig. mit nem timer (vllt swing timer? -> How to Use Swing Timers (The Java™ Tutorials > Creating a GUI With JFC/Swing > Using Other Swing Features)) möglich sein. nach ablauf, einfach aktuellen frame ausblenden, neuen einblenden ?!
new Thread() {
public void run() {
try {
Thread.sleep(3000); // warte 3 Sekunden
otherFrame.toFront();
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
Niemals nicht die [c]run[/c]-Methode eines Threads überschreiben. Besser ein Runnable implementieren und dem Thread zur Ausführung übergeben. Davon abgesehen finde ich einen java.util.Timer schöner als einen Thread. Ansonsten sollte man auch in AWT synchron zum EDT bleiben.[java=2]public void run() {[/code]
final java.util.Timer timer = new java.util.Timer(true);
timer.schedule(new TimerTask() {
@Override
public void run() {
EventQueue.invokeLater(new Runnable() {
public void run() {
otherFrame.toFront();
}
});
}
}, 3000);
Hä... Ob man ein Runnable in einen Thread verpackt oder direkt einen Thread startet ist doch das selbe. Runnable gibt's doch nur weil es keine Mehrfachvererbung gibt. Und run() wurde doch auch in javimka's Post überschrieben - Das @override ist doch nur ne Annotation?! Oder wie, oder was? Klär mich mal auf ich versteh das net so ganzNiemals nicht die run -Methode eines Threads überschreiben. Besser ein Runnable implementieren und dem Thread zur Ausführung übergeben.
Die API-Doc von Runnable sagt was anderes. Siehe hier: http://www.java-forum.org/awt-swing-swt/92656-rausfahren.html#post587311Hä... Ob man ein Runnable in einen Thread verpackt oder direkt einen Thread startet ist doch das selbe. Runnable gibt's doch nur weil es keine Mehrfachvererbung gibt. Und run() wurde doch auch in javimka's Post überschrieben - Das @override ist doch nur ne Annotation?! Oder wie, oder was? Klär mich mal auf ich versteh das net so ganz
Eigentlich noch nicht mal dann. "Echtes" Ableiten, also extends, sollte man an sich nur nutzen wenn man die Eigenschaften braucht (Instanzvariablen), nicht die Funktionalität nach außen. Solange man nur gewisse Methoden haben will sollte man immer nur zu einer Komposition hindelegieren. Aber schon klar, wer macht sich schon für jede kleine asslige Klasse erstmal ein Interface, dann eine Default-Implementierung, und dann letztendlich eine Klasse, die das Interface als Komposition nutzt und zur Laufzeit durch die Default-Implementierung instantiiert (Ja, das ist genauso umständlich und verwirrend wie es sich anhört). Zumindest hab ich das schon öfters gelesen, dass Vererbung von Programmierern zu oft verwendet wird und eig. nur in paar % der Fälle wirklich genutzt werden sollte. Eben nur dann, wenn man wirklich eine echte Ableitung mit allen Attributen rechtfertigen muss. Das ist sinnvoll bei den Anfänger-Beispielen vonwegen Fahrzeug, PKW, LKW, Motorrad usw. Aber in der Praxis hat man diese eindeutige "ist"-Beziehung bei den Klassen eines Programms meist nicht, da die Klassen nicht wirklich so klare Objekte aus der realen Welt sind. Und dann sollte man halt auch nicht ableiten. Denn wenn das Auto in meinem Race-Game nicht so stark zur Laufzeit gebunden ist, dann kann ich in später mal die 4 Reifen austauschen durch 2 Kühlschränke und eine tote Ratte... Naja wer's brauchtMan erzeugt eine Ableitung dann, wenn man eine Klasse funktional erweitert.