java JPanel bewegen

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Auf den ersten Blick würde ich ja sagen, weil Dein Vergleichsoperator verkehrt herum geschrieben ist.

Aber ich gehe mal ne Wette ein, daß das bloß ein Tippfehler ist, weil Du das nicht mit copy & paste übernommen hast? Weil: Es fehlt dann auch noch ein Semikolon (beim x++), und Dein Programm wird ja aber offenbar compiliert und ausgeführt.

=============

Auf den zweiten Blick sehe ich, daß Du Deine Koordinatenänderung nicht "im Hintergrund ausführen" läßt. Sofern Du das im Vordergrund-Thread machen läßt, der auch für die Fensterdarstellung verantwortlich ist, kann das so nicht klappen: Stelle Dir die Threads als Personen vor, die Dein Programm abarbeiten, und dabei KEINE Möglichkeit haben, aus dem von Dir definierten Programmfluß auszubrechen.

Wenn da irgendwo hinten auf dem Zettel steht, daß der Typ den Fensterinhalt aktualisieren soll, aber vorn steht erstmal, daß er nahezu UNENDLICH (while) sich mit einer Variablen selbstbefriedigen soll (deren Werte nie jemand zu Gesicht bekommt - weil: es ist ja sonst niemand da, der den Fensterinhalt neu zeichnen könnte, gelle?; und den einzigen, der das bei Dir tun könnte, läßt Du in einer geschlossenen Schleifen-Anstalt Runden auf dem Hof laufen!), dann ist da nix an Reaktion zu sehen.

Ok schon mal danke für die gute Antwort ( schön, dass es noch Menschen gibt die auch gute Antworten schreiben können :D )! Zu 1. Ja das stimmt mit dem tippfehler, weil ich hab das so oder soähnlich gemacht, aber wieder rausgelöscht weil es ja nicht funktioniert hat.

Zu 2. Das Problem dabei hab ich verstanden ( hast du besser wie mein Buch erklärt :D! ), aber wie ich das Problem beheben lässt, da fällt mir nichts ein! Ich habe jeztzt noch weng rumprobiert um den Fehler zu beheben und das wichtige herauszuheben bzw. im Hintergrund laufen lassen. Könntest du mir einen TIpp geben? Wenn es dir hilft, kann ich dir auch den ganzen Quelltext posten, wird aber ein wenig lang...

Auf jedenfall danke für deine HIlfe, jetzt weiß ich wenigstens wo das Problem liegt!

MFG David Schwarzbeck

0
@davidschwarz

Die Handhabung von "Thread" (http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html) ist denkbar einfach:

  • Eigene Klasse vom Thread ableiten (weil Du in Java alles in Klassen verpacken mußt, nimm es hin!)
  • Dort eine einzige Funktion "run" überschreiben
  • Dort drin alles machen lassen, was in den Hintergrund soll
  • Die Sache starten wie im Beispiel in der Klassenbeschreibung dargestellt

Wenn Du etwas exakteres Timing statt mit "Thread.sleep" haben willst, kannst Du auch einen "Timer" verwenden. Der ist fast dasselbe wie ein Thread, nur daß Du periodisch wiederholte Aktionen nicht in einer while-Schleife mit sleep verpackst, sondern das while und sleep einfach wegläßt und das periodische Aufrufen den Timer-Innereien überläßt, die die Aufrufe auf längere Zeit betrachtet exakter auslösen.

0
@davidschwarz

Wie Du an dem Link zum "Thread" leicht erkennen kannst, gibt es in der Java-Referenzdokumentation zu jeder Klasse eine beschreibende HTML-Datei.

Ersetze einfach "Thread" durch "Timer" und Du bist am Ziel.

Wenn Du eine Übersicht über sämtliche Klassen des JRE haben willst, klicke auf der sich öffnenden Seite oben in der Menüleiste auf "Frames", dann bekommst Du eine Seitenansicht, wo links eine Spalte mit der alphabetisch sortierten Liste sämtlicher Klassen zu sehen ist, die in die links oben ausgewählten Packages gehören. Der Umgang mit dieser Referenzdokumentation sollte immer zu den ersten Übungen für Java-Einsteiger gehören!

0
@WhiteGandalf

Ok vielen Dank ich probiers aus! Danke für die Hilfe und die vielen Antworten auf meine dummen fragen :D!

0

mach es doch über ne rectangle und das mit den hindernissen über die collied funktion in der rectangle, is viel besser!

das klappt dann nicht ganz mit dem restlichen Quelltext

0

Wie schaffe ich es am besten innerhalb von 3 Wochen sehr gut mit Java zu programmieren?

Hallo Community,

ich wollte euch fragen wie ich es am besten schaffe innerhalb von 3 Wochen sehr gut mit Java zu programmieren? Ich studiere Informatik und muss unbedingt es drauf haben. Hab leider eine sehr schlechte Erfahrung darin, jedoch bin ich bereit für diese 3 Wochen sehr viel Zeit zu investieren!!

Natürlich weiß ich, dass man üben, üben und nochmal üben sollte, aber habt ihr Erfahung mit diesem Video Tutorials von Panju? Man kann auch den kompletten Kurs für ca. 45€ kaufen oder ist jetzt ein Buch angebrachter? oder gibts es andere Vorschläge??

...zur Frage

Problem mit Java Code aus Greenfoot...

Hallo, im nachfolgenden Bild seht ihr mein kleines Java Problem. Könnte mir eventuell jemand von euch helfen?

    /**
 * Prepare the world for the start of the program. That is: create the initial
 * objects and add them to the world.
 */
private void prepare()
{
    for(int i=1; i<41; i++)
    {
        int x = Greenfoot.getRandomNumber(20);
        int y = Greenfoot.getRandomNumber(20);
        Wand wand = new Wand();
        addObject(wand, x, y);
    }
    for(int i=1; i<16; i++)
    {
        int x = Greenfoot.getRandomNumber(20);
        int y = Greenfoot.getRandomNumber(20);
        Schatz schatz = new Schatz();
        addObject(schatz, x, y);
    }


    do
    {
        int a = Greenfoot.getRandomNumber(20);
        int b = Greenfoot.getRandomNumber(20);
        int c = Greenfoot.getRandomNumber(20);
        int d = Greenfoot.getRandomNumber(20);
    }
        while(a>1 && a<3 && b<1 && b>3)
        {
    Abenteurer abenteurer = new Abenteurer();
    addObject(abenteurer, a, b);
}
...zur Frage

do while + try catch Abfrage in Java zur Eingabenkontrolle erzeugt unendlichen Loop

Also ich will in Java eine Methode schreiben die die Eingabe kontrolliert und dann bei korrekter Eingabe den eingegeben Wert zurückgibt. Mein Quellcode sieht so aus

public static int liesInt(String Ausgabe)
{       
    Scanner eingabe = new Scanner (System.in);
    int eingegeben = 0;
    System.out.println(Ausgabe);
    boolean error = true;
    
    do
    {
        try
        {
            eingegeben = eingabe.nextInt();
            error = false;
        }
        catch(InputMismatchException e)
        {
            System.out.println("Bitte geben Sie nur ganze Zahlen ein!");
            error = true;
        }   
    } while (error == true);
            
    return eingegeben;
}

mein problem ist dass er nach dem der catch greift und den error wert auf true gesetzt ist er nicht wieder zum try springt und nicht erneut nach einer eingabe fragt...

wo ist mein fehler eigentlich müsste er nach dem catch wieder oben anfangen beim try aber das passiert nicht

...zur Frage

Gutes Forum für's Java Programmieren?

Hallo allerseits,

ich (versuche) grade das programmieren von Java zu erlernen. Da ich bis jetzt (nach 2 Monaten) immer noch nicht verstanden habe und gelsen habe, dass man am besten lernt, indem man Fehler macht, wollte ich fragen, ob jemand irgendein gutes Forum kennt, wo leute aktiv und neulingen helfen können, was sie falsch gemacht haben ... .

Danke im Vorraus ;)

...zur Frage

While- in For-Schleife umschreiben - JAVA

Hi, ich habe in einer Aufgabe ein Codefragment vorgegeben, dass ich in eine For-Schleife umschreiben soll. Bin Anfänger und wollte deshalb hier mal fragen, ob sich jemand mit JAVA auskennt und meine Lösung anschauen und ggf. korrigieren könnte... Wäre echt nett!

Hier die Vorgabe:

ArrayList<Rucksack> studentenRucksaecke = new ArrayList<Rucksack>();
        ...
        int pos = studentenRucksaecke.size();
        while (pos>=1) {
        pos--;
        studentenRucksaecke.get(pos).gewichtPruefen();
        }
 

(Leider werden "<>" in der Code-Formatierung als "&lt ;" dargestellt... Sorry.)

Meine Umschreibung in eine For-Schleife:

ArrayList<Rucksack> studentenRucksaecke = new ArrayList<Rucksack>();
...
for(int pos = studentenRucksaecke.size(); pos>=1; pos--){
    studentenRucksaecke.get(pos).gewichtPruefen();
}   
...zur Frage

Kann man mit Java ein 3D Spiel Programmieren und wenn ja welche Programmieroberfläche ist dazu geeignet(ich benutze Eclipse)?

...zur Frage

Was möchtest Du wissen?