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.
Hier ist die Methode hindernisseBewegen() :
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.
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.