Ich brauche dringend hilfe!

jonasfutsch

Mitglied
Ich muss eine Java Applet schreiben, in der die Olympischen Ringe an einer zufälligen Stelle auf dem Bildschirm aufpoppen und wieder verschwinden und dann an einer anderen Stelle wieder aufpoppen usw. (wie ein Bildschirmschoner).
Ich bitte um Hilfe.
 

jonasfutsch

Mitglied
Erstmal sorry ich hab noch garkeine Ahnung von Java.
Also ich will die 5 Ringe von der Olympischen Flagge 'zusammenpacken' also, dass ich danach dann einfach die 5 Ringe aufrufen kann mit dem Namen den ich vergeben hab (so wie z.B. int x). Und danach muss die Flagge an einer zufälligen Stelle auf dem Bildschirm erscheinen und nach 2 Sekunden wieder verschwinden und dann wieder an einer anderen Stelle erscheinen und nach 2 Sekunden wieder verschwinden usw.
 

Meniskusschaden

Top Contributor
Den gleichen Thread gibt es schon im Forum Hausaufgaben. Habe da gerade etwas geantwortet und merke jetzt, dass der Thread doppelt ist. Vielleicht kann das jemand zusammenführen. Im Hausaufgaben-Thread hat der TE schon einigen Code gepostet.
 

Christopher25

Bekanntes Mitglied
Wie genau stellst du dier diese Animation vor?
Sollten die Ringe individuell z.B. nacheinander aufploppen?
Oder immer alle direkt auf einmal?

Jenachdem könntest du einfach die (wenn du mit SWING arbeitest)
Die paintComponent Methode der JPanel Klasse überschreiben und dort die Ringe an einer belibigen Stelle zeichnen lassen.

Du könntest aber auch direkt ein Image von den Olympischen Ringen nehmen dieses in ein JPanel einfügen.
Dieses JPanel komment dann in ein anderes JPanel ohne LayoutManager.
Hier mal der Code womit du ein Image in das JPanel reinzeichnen kannst.
Java:
public class MyPanel extends JPanel {
    private Image image;
   
    public MyPanel(Image image) {
        this.image = image;
        repaint();
    }
   
    public void paintComponent(Graphics g) {
        g.drawImage(image, 0, 0, getWidth(), getHeight(), this);
    }
}

Dabei müsstest du dann nur beachten, dass der Layoutmanager die Größe usw. der Komponente setzt.
Das heißt, du müsstest die Größe und die Position des Element selber setzen z.b. mit:

p = new myPanel(imgOlympRinge);
mainPanel.setLayout(null);
mainPanel.add(p);

/**
* Diese Methode sollte für x und y zufallswerte auf den Bildschirm bekommen.
* Für die Breite und Höhe am besten die Originalwerte des Image's.
*/
public void randomPosition(int x, int y, int breite, int hoehe) {
p.setBounds(x, y, breite, hoehe);
}

Die Bildschirmauflösung bekommst du über verschiedene Wege z.B. über die Klasse Toolkit von AWT (Toolkit.getDefaultToolkit())
 

Jardcore

Top Contributor
Für solche Sachen würde ich JavaFX empfehlen, da dort einfache Aufplopp Animationen schon von Haus aus mit < 10 Zeilen Code realisierbar sind.

Ich würde dir Empfehlen:
0. hier nachschauen https://docs.oracle.com/javase/8/javafx/api/javafx/application/Application.html
1. eine Ring Klasse zu erstellen. (Diese hat die Eigenschaften die du brauchst)
2. eine Renderer Klasse, diese kann ein Ring übergeben bekommen und zeichnet diesen. (aufploppen und co)
2.1 Der Renderer hat dabei ein Canvas auf dem gezeichnet wird.
3. In der Hauptklasse die von Application erbt ein Fenster erstellen, welches das Canvas des Renderes darstellt. (Stickpunkt stage.show(); und scene.add(canvas);)

Beste Grüße,
Jar
 

Neue Themen


Oben