Swing Timer führt Methode nicht aus

ganonlight

Mitglied
Hi^^,

Ich hab ein Problem, und zwar, dass ich einen Timer erstellt habe, der immer wieder nach 1 Sekunde eine bestimmte Methode aufrufen soll, aber genau das macht er nicht.

Java:
public static void main(String[] args) {

        FenstermitButton fmButton = new FenstermitButton();
        fmButton.spielFenster.setVisible( true );
        
        Timer t = new Timer( 1000, new ActionListener(){
            public void actionPerformed( ActionEvent event ){
                FenstermitButton fmButton = new FenstermitButton();
                fmButton.hindernisseBewegen();

            }
        } );

        t.start();
        
        fmButton.gameOver();

        t.stop();

    }

Hier ist die Methode hindernisseBewegen() :

Java:
public void hindernisseBewegen(){

              for( int i = 0; i < hindernisNamen.length; i++ ){

                    if( hindernisHorizontalVertikalBewegung[ i ] == 'x' ){
                        if( hindernisRichtung[ i ] == 1 ){
                            if( hindernisX[ i ] - hindernisOriginalX[ i ] < hindernisIntervall[ i ] ){
                                hindernisX[ i ] += hindernisGeschwindigkeit[ i ];
                            }
                            else{
                                hindernisRichtung[ i ] = 2;
                            }
                        }
                        else{
                            if( hindernisX[ i ] - hindernisOriginalX[ i ] > - hindernisIntervall[ i ] ){
                                hindernisX[ i ] -= hindernisGeschwindigkeit[ i ];
                            }
                            else{
                                hindernisRichtung[ i ] = 1;
                            }
                        }

                    }

                    else{
                        if( hindernisRichtung[ i ] == 1 ){
                            if( hindernisY[ i ] - hindernisOriginalY[ i ] < hindernisIntervall[ i ] ){
                                hindernisY[ i ] += hindernisGeschwindigkeit[ i ];
                            }
                            else{
                                hindernisRichtung[ i ] = 2;
                            }
                        }
                        else{
                            if( hindernisY[ i ] - hindernisOriginalY[ i ] > - hindernisIntervall[ i ] ){
                                hindernisY[ i ] -= hindernisGeschwindigkeit[ i ];
                            }
                            else{
                                hindernisRichtung[ i ] = 1;
                            }
                        }

                    }
                    
                    hindernisNamen[ i ].setLocation( hindernisX[ i ], hindernisY[ i ] );

                }


    }

Das ganze Programm macht bis jetzt in etwa folgendes:
Wenn der Konstuktor der Klasse FenstermitButton aufgerufen wird, wird sofort ein JFrame mit ein paar JButton erzeugt. Und diese Button sollen durch das mehrmalige Aufrufen der Methode hindernisseBewegen() immer wieder abwechselnd nach oben und unten bzw. links und rechts bewegt werden.
Und die Methode hindernisseBewegen() sollte das hier machen:
Sie läuft mit der for-Schleife durch das JButton Array hindernisNamen der Länge 5. Und bei jedem JButton-Objekt soll sie zuerst testen, ob der jeweilige JButton horizontal ( 'x' ) oder vertikal bewegt werden soll. Dann wird getestet, in welche Richtung sich der Button bewegen soll, entweder in positive ( wenn hindernisRichtung == 1 ) oder in negative ( wenn hindernisRichtung == 2 ) x- bzw. y-Richtung. Als letztes wird dann dem Button seine neue Position zugewiesen.

Jetzt will der Timer diese Methode nicht aufrufen, und ich versteh nicht, wieso.
Ich hab schon getestet, ob es bei einer einfacheren Methode funktionieren würde. Und wenn die Methode hindernisseBewegen() z.B. nur einen JOptionPane.showMessageDialog(....) aufrufen würde, würde der Timer diese Methode problemlos ausfüren. Also muss es ja an dieser Methode liegen, und deshalb hab ich versucht, sie euch zu erklären.
 

ganonlight

Mitglied
Ach, stimmt! Danke für die schnelle Antwort^^

Man soll hier ja immer die Lösung posten, also hier:

Java:
public static void main(String[] args) {

        FenstermitButton fmButton = new FenstermitButton();
        fmButton.spielFenster.setVisible( true );

        fmButton.hindernisseBewegen();

        fmButton.t.start();
        
        fmButton.gameOver();

        fmButton.t.stop();

    }

Java:
public void hindernisseBewegen(){

        t = new Timer( 1000, new ActionListener() {

            public void actionPerformed( ActionEvent event ){

              for( int i = 0; i < hindernisNamen.length; i++ ){

                    if( hindernisHorizontalVertikalBewegung[ i ] == 'x' ){
                        if( hindernisRichtung[ i ] == 1 ){
                            if( hindernisX[ i ] - hindernisOriginalX[ i ] < hindernisIntervall[ i ] ){
                                hindernisX[ i ] += hindernisGeschwindigkeit[ i ];
                            }
                            else{
                                hindernisRichtung[ i ] = 2;
                            }
                        }
                        else{
                            if( hindernisX[ i ] - hindernisOriginalX[ i ] > - hindernisIntervall[ i ] ){
                                hindernisX[ i ] -= hindernisGeschwindigkeit[ i ];
                            }
                            else{
                                hindernisRichtung[ i ] = 1;
                            }
                        }

                    }

                    else{
                        if( hindernisRichtung[ i ] == 1 ){
                            if( hindernisY[ i ] - hindernisOriginalY[ i ] < hindernisIntervall[ i ] ){
                                hindernisY[ i ] += hindernisGeschwindigkeit[ i ];
                            }
                            else{
                                hindernisRichtung[ i ] = 2;
                            }
                        }
                        else{
                            if( hindernisY[ i ] - hindernisOriginalY[ i ] > - hindernisIntervall[ i ] ){
                                hindernisY[ i ] -= hindernisGeschwindigkeit[ i ];
                            }
                            else{
                                hindernisRichtung[ i ] = 1;
                            }
                        }

                    }
                    
                    hindernisNamen[ i ].setLocation( hindernisX[ i ], hindernisY[ i ] );

                }
            }

        } );


    }
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Timer terminiert nicht Allgemeine Java-Themen 5
W Timer Konzept-Frage Allgemeine Java-Themen 16
Z Timer Allgemeine Java-Themen 5
H Timer funktioniert nicht? Allgemeine Java-Themen 3
Tacofan Kurzer Timer Allgemeine Java-Themen 22
B Threads Timer wird immer schneller Allgemeine Java-Themen 6
H Consumer (Java8 Lambda) an Timer übergeben Allgemeine Java-Themen 2
wolfgang63 Best Practice Taktgeber oder Timer mit variablem Intervall Allgemeine Java-Themen 1
I Timer Allgemeine Java-Themen 1
X Timer Allgemeine Java-Themen 3
C Timer? Allgemeine Java-Themen 8
U Timer - Timertask endet nicht Allgemeine Java-Themen 4
X timer.schedule - Allgemeine Java-Themen 7
D Simpler Timer zum warten Allgemeine Java-Themen 19
H java.util.Timer und Funktion mit SQL Exception Allgemeine Java-Themen 5
G Threads Timer wird unterbrochen Allgemeine Java-Themen 20
P Java Timer Allgemeine Java-Themen 3
K Timer Thread Allgemeine Java-Themen 8
E Wie Timer anbringen mit Designer in Netbeans Allgemeine Java-Themen 5
M Ampelsteuerung über Timer in Java realisieren Allgemeine Java-Themen 3
O Timer pausieren Allgemeine Java-Themen 5
M Timer von nicht existiertem Objekt stopen Allgemeine Java-Themen 5
B util.Timer zu langsam? Allgemeine Java-Themen 3
P Java Timer Allgemeine Java-Themen 2
S Timer in Applet? Allgemeine Java-Themen 11
V Frage zu util.Timer (-> TimerTask) Allgemeine Java-Themen 2
P Swing Eine Sekunde warten (Timer) Allgemeine Java-Themen 7
E Timer class macht einfach garnichts :/ Allgemeine Java-Themen 6
T Timer oder Alternative? Allgemeine Java-Themen 3
Z Timer -> Thread jeden Tag ausführen Allgemeine Java-Themen 5
D Probleme mit einem Timer Allgemeine Java-Themen 6
E Timer - gleichen Task mehrfach planen Allgemeine Java-Themen 2
D Timer oder Thread, das ist hier die Frage Allgemeine Java-Themen 3
A TimerTask - Task stoppen - timer.cancel() funktioniert nicht Allgemeine Java-Themen 8
S Problem mit einem Timer (Aktualisierung etc.) Allgemeine Java-Themen 2
B Timer übergabe Allgemeine Java-Themen 3
G Timer abbrechen und neu starten Allgemeine Java-Themen 3
G timer mit buttondruck abbrechen Allgemeine Java-Themen 7
T Timer oder ähnliches? Allgemeine Java-Themen 3
O Timer und TimerTask: Programm terminiert nicht! Allgemeine Java-Themen 3
O Thread als Timer Interrupt Allgemeine Java-Themen 2
C Timer.scheduleAtFixedRate(). Allgemeine Java-Themen 5
H gibts in Java sowas wie in Visual Basic den Timer? Allgemeine Java-Themen 5
B 24 Uhr Timer Task Allgemeine Java-Themen 5
G Timer nur 64 mal pro Sekunde? Allgemeine Java-Themen 18
S Frage zu jTDS, JAVA allgemein und Timer Allgemeine Java-Themen 6
L Problem mit Timer Allgemeine Java-Themen 7
J Timer-Objekt / Task-Zustand ermitteln Allgemeine Java-Themen 5
R Programm führt Methoden gleichzeitig aus Allgemeine Java-Themen 2
temi Einfaches Eventhandling führt zu Brett vor Kopf Allgemeine Java-Themen 2
L Liste führt sich nicht weiter Allgemeine Java-Themen 5
M Methoden Methode führt Ende vor dem Anfang aus Allgemeine Java-Themen 7
B JAR Datei führt eine andere JAR Datei aus Allgemeine Java-Themen 2
R Öffnen eines COM-Ports führt zu Programmabsturz Allgemeine Java-Themen 6
R Was führt dieser Code aus Allgemeine Java-Themen 3
S Kopieren von Datei führt zu Beschädigung Allgemeine Java-Themen 7
W Hilfe bei Methode Allgemeine Java-Themen 14
Ü Methoden Arrays vergleichen - Methode Allgemeine Java-Themen 1
Simon16 compareTo Methode überschreiben Allgemeine Java-Themen 4
TheSkyRider Methode über DataInputStream "auslösen" Allgemeine Java-Themen 6
M CrudRepository save Methode mocken Allgemeine Java-Themen 6
thor_norsk toString() - Methode Allgemeine Java-Themen 6
A Clean Code: Variable vs. Methode Allgemeine Java-Themen 8
Encera Zweite Main-Methode zuschalten Allgemeine Java-Themen 18
M Optimierung einer Methode (byte-Geraffel) Allgemeine Java-Themen 2
I Hibernate Envers - Aufruf der Methode zum Speichern selbst ausführen oder managen? Allgemeine Java-Themen 0
N rekursion mehrfach eine Methode Öffnen Allgemeine Java-Themen 4
berserkerdq2 Wenn ich eine Methode nur jede 50ms ausführen will, wie mach ich das? Allgemeine Java-Themen 4
berserkerdq2 run-methode eines Threads so programmieren, dass 30x die Sekunde etwas ausgeführt wird. Allgemeine Java-Themen 44
N Schnellste Methode, ein Array durchzugehen? Allgemeine Java-Themen 9
E Methoden abstract static Methode Allgemeine Java-Themen 8
E Eine Methode einer extendeten Klasse deakitivieren Allgemeine Java-Themen 12
F Getter Methode aufrufen funktioniert nicht Allgemeine Java-Themen 1
B In Java Methode mit generic input und output basteln? Allgemeine Java-Themen 4
goldmensch Datentypen Welche Methode hat die bessere Performance? Allgemeine Java-Themen 12
R Lambda Expression in einer Methode execute() aufrufen (execute() ist eine Methode aus dem funktionalen Interface Command) Allgemeine Java-Themen 5
T C++ Methode Übersetzung in Java Allgemeine Java-Themen 3
L Erste Schritte TDD testen einer Methode mit injezierten Services? Allgemeine Java-Themen 12
R @author vor Methode (eclipse) Allgemeine Java-Themen 1
J RotSchwarzBaum: Löschen mittels insert-Methode Allgemeine Java-Themen 20
Y Java Bruttoberechnen + runden Methode Allgemeine Java-Themen 1
R Warum ist die Methode unendlich oft rekursiv? Allgemeine Java-Themen 5
R Methoden Was fehlt mir bzw. muss ich bei der Methode countHarshabNumbers ändern damit ich die Harshad Zahlen im Intervall [51, 79] zählen kann? Allgemeine Java-Themen 19
D ArrayListe delete Methode klappt nicht Allgemeine Java-Themen 12
Drachenbauer Wie finde ich den Aufrufer zu einer Methode, die sich nicht in meinem Projekt befindet? Allgemeine Java-Themen 2
A Ist ein enum hier richtig? Enum toString() Methode. Allgemeine Java-Themen 1
Scream_ilias brute force methode verbessern? Allgemeine Java-Themen 6
Scream_ilias passwort meines pc per brute force methode knacken Allgemeine Java-Themen 4
S static methode im Interface Allgemeine Java-Themen 1
M Konstruktor einer Methode Allgemeine Java-Themen 35
A HashMap Methode "get()"-Problem Allgemeine Java-Themen 28
E Hat der Compiler einen Fehler oder warumbeendet return nicht eine Methode ? Allgemeine Java-Themen 7
T Sinn einer toString Methode Allgemeine Java-Themen 3
T Split() Methode funktioniert nicht?! Allgemeine Java-Themen 11
L Methoden Über Reflections eine Methode mit aufrufen Allgemeine Java-Themen 3
S Kann ich eine Methode schreiben die alle Arten von funktionalen Interfaces akzeptiert..? Allgemeine Java-Themen 21
L ToString-Methode Allgemeine Java-Themen 6
X Datentypen NPE in längerer Methode Allgemeine Java-Themen 12
I Methoden Generics-Methode Allgemeine Java-Themen 3
H Strategy Pattern - changeColor() Methode - input rgd oder hex einlesen Allgemeine Java-Themen 1

Ähnliche Java Themen

Neue Themen


Oben