Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo!
Ich möchte auf meinem JPanel alle Komponenten verschieben. Unabhängig davon wie viele es sind. Für einen Einblick habe ich mir das ungefähr so vorgestellt:
Java:
int size = screen.ground.getComponentCount();
for(int i = 0; i <= size; i++){
int x = (int) screen.ground.getComponent(i).getLocation().getX();
int y = (int) screen.ground.getComponent(i).getLocation().getY();
screen.ground.getComponent(i).setLocation(x+20,y);
}
leider funktioniert diese Version nicht...(NullPointerException)
Ich habe bei dem Test genau eine Komponente auf dem JPanel "ground" ind der Klasse "screen"..
package pack;
import java.awt.Component;
import javax.swing.JComponent;
import javax.swing.JPanel;
public class reloader {
public static void main(String[] args) throws InterruptedException{
while (true){
Thread.sleep(500);
move();
System.out.println("test");
}
}
static void move(){
/*int size = screen.ground.getComponentCount();
for(int i = 0; i <= size; i++){
int x = (int) screen.ground.getComponent(i).getLocation().getX();
int y = (int) screen.ground.getComponent(i).getLocation().getY();
screen.ground.getComponent(i).setLocation(x+20,y);
}
*/
for(int i=0;i<screen.frame.getContentPane().getComponents().length;i++){
System.out.println(screen.frame.getContentPane().getComponents()[i]);
}
}
}
[\code]
das die klasse woraus der code oben ist
Eine Klasse, die JFrame erweitert, und die gleichzeitig eine static Variable vom Typ JFrame hat, sorgt nur für Ärger und Verwirrung.
Und den Aufruf von new reloader() kannst du dir sparen, weil reloader nur statische Methode hat. Das Erzeugen einer Instanz bringt dir gar nix.
Wieviel Programmierfahrung hast du in Java?
Eine Klasse, die JFrame erweitert, und die gleichzeitig eine static Variable vom Typ JFrame hat, sorgt nur für Ärger und Verwirrung.
Und den Aufruf von new reloader() kannst du dir sparen, weil reloader nur statische Methode hat. Das Erzeugen einer Instanz bringt dir gar nix.
Wieviel Programmierfahrung hast du in Java?
Naja...Habe schon recht viel gemacht (seit 1 Jahr). Aber ich glaube man merkt, dass ich halt alles immer selber mir beigebracht habe und hier im Forum nachgelesen habe usw. ...Mir fehlen (wahrscheinlich) viele Grundprinzipien und vor allem, wie man seine Projekte aufbaut usw... Ich gucke mir immer wieder etwas an aber vor allem suche ich, wenn ich etwas suche danach und mach dann weiter einfach.. Halt alles ziemlich selbst beigebracht
Dann wirf in einem ersten Schritt mal die main-Methode aus reloader raus und benutze im Konstruktor von screen die attribute der Klasse screen, nämlich frame und ground statt dort neue loakle Variablen anzulegen. Dann könnte es schon mal das tun was du willst. Dann ist es aber immer noch nicht schön. Dazu müsstest du die ganzen static-Anweisungen (bis auf main natürlich) entfernen und deine Klasse Screen nennen damit man sie nicht mit einer Variablen verwechselt (Klassennamen sollten immer mit Grossbuchstaben beginnen)