Grafik auf einem JPanel bewegen.

headset

Mitglied
Ich habe ein Programm, wo sich Kreise bewegen und von einander abprallen.
Jetzt mochte ich aber die Kreise durch eine Grafik ersetzen.
Mein Code:
[JAVA=1]
package de.elias.grafik;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.ImageCapabilities;

import javax.swing.ImageIcon;

/**
* Diese Klasse ist der Bauplan, für die Kugeln
*
* @author Elias
*
*/
public class Kugel extends Thread {
/**
* Das ist die Grösse von einer Kugel
*/
private int durchmesser = 50;
/**
* Das ist die Farbe der Kugeln
*/
private Color farbe = Color.BLACK;
/**
* Das Panel aus dem Fenster übergeben
*/
private Screen screen = null;
/**
* Das ist die X Position der Kugel
*/
private double x = 0;
/**
* Das ist die Y Position der Kugel
*/
private double y = 0;
/**
* das ist die Geschwindigkeit, mit der sich die Kugel auf der x Koordinate
* bewegt.
*/
private double xSpeed = 0;
/**
* das ist die Geschwindigkeit, mit der sich die Kugel auf der y Koordinate
* bewegt.
*/
private double ySpeed = 0;


private double masse = 0;

/**
* Der Konstruktor nimmt die Eingenschaften auf
*
* @param screen
* Das ist das Panel im Fenster
* @param x
* Das ist die X Position der Kugel
* @param y
* Das ist die Y Position der Kugel
* @param xSpeed
* das ist die Geschwindigkeit, mit der sich die Kugel auf der x
* Koordinate bewegt.
* @param ySpeed
* das ist die Geschwindigkeit, mit der sich die Kugel auf der y
* Koordinate bewegt.
*@param durchmesser
* Da ist der Durchmesser der kugel
*/
public Kugel(Screen screen, int x, int y, double xSpeed, double ySpeed,
int durchmesser) {
this.screen = screen;
this.xSpeed = xSpeed;
this.ySpeed = ySpeed;
this.durchmesser = durchmesser;
this.x = x;
this.y = y;
// -- Berechnung der Masse von der Kugel mit hilfe der Volumenformel bei
// einer Dichte von 1: (4/3*Pi*radius³)
this.masse = 4 / 3 * Math.PI * Math.pow(durchmesser / 2, 3);
}
/**
* Hier verändert die Kugel ihre Position
*/
public void bewege() {
// -- this.x = x + xSpeed;
this.x += xSpeed;
this.y += ySpeed;
kolisionKugel();
kolisionScreen();
}

@Override
public void run() {
// super.run();
while (true) {
try {
sleep(2);
} catch (InterruptedException e) {
e.printStackTrace();
}
bewege();
}
}

/**
* hier werden die kugeln gezeichnet
*
* @param g
* das ist das Objekt, was die Kugeln zeichnet.
*/
public void paint(Graphics g) {
// bewege();

g.setColor(farbe);
g.drawOval((int) x - durchmesser / 2, (int) y - durchmesser / 2,
durchmesser, durchmesser);
}

/**
* Hier wird überprüft, ob zwei Kugeln Kolisieren.
*/
private void kolisionKugel() {
boolean start = false;
for (Kugel kugel : screen.getKugeln()) {
// -- Fehlerprüfung
if (kugel == this) {
start = true;
continue;
}
if (!start) {
continue;
}

// -- Verarbeitung
double xAbstand = kugel.x - x;
double yAbstand = kugel.y - y;
if (xAbstand == 0 && yAbstand == 0)
continue;
// -- Satz des Pythagoras
double entfernung = Math.sqrt(Math.pow(xAbstand, 2)
+ Math.pow(yAbstand, 2));

double minEntfernung = durchmesser / 2 + kugel.durchmesser / 2;

if (x - kugel.x > minEntfernung)
continue;
if (y - kugel.y > minEntfernung)
continue;

if (entfernung <= minEntfernung) {
kolision(xAbstand, yAbstand, entfernung, kugel);
// System.out.println("Kolision");
}

}
}

private void kolision(double xAbstand, double yAbstand, double entfernung,

Kugel kugel) {
// -- Bei bestimmten Konstelationen reagiert die Berechnung fehlerhaft.
if (x == kugel.x && y == kugel.y && xSpeed == kugel.xSpeed
&& ySpeed == kugel.ySpeed)
return;

// -- Wir estellen eine Matrix mit den neuen
// Koordinatenachsen(parallel/senkrecht zum Stoß)
double matrix_1_x = xAbstand / entfernung;
double matrix_1_y = -yAbstand / entfernung;
double matrix_2_x = yAbstand / entfernung;
double matrix_2_y = matrix_1_x;

// -- Koordinatentransformation
double vP1 = xSpeed * matrix_1_x + ySpeed * -matrix_1_y;
double vS1 = xSpeed * -matrix_2_x + ySpeed * matrix_2_y;
double vP2 = kugel.xSpeed * matrix_1_x + kugel.ySpeed * -matrix_1_y;
double vS2 = kugel.xSpeed * -matrix_2_x + kugel.ySpeed * matrix_2_y;

// -- Wenn die Kugeln sich von einander entfernen, findet keine Änderung
// statt.
if (vP1 - vP2 < 0)
return;

// -- Der zentrale Stoß
double mTod = masse + kugel.masse;
double vP1_ = (masse - kugel.masse) / mTod * vP1 + 2 * kugel.masse
/ mTod * vP2;
double vP2_ = (kugel.masse - masse) / mTod * vP2 + 2 * masse / mTod
* vP1;

// -- berechnung der Rücktransvormation
xSpeed = vP1_ * matrix_1_x + vS1 * matrix_1_y;
kugel.xSpeed = vP2_ * matrix_1_x + vS2 * matrix_1_y;
ySpeed = vP1_ * matrix_2_x + vS1 * matrix_2_y;
kugel.ySpeed = vP2_ * matrix_2_x + vS2 * matrix_2_y;

// xSpeed = vX1;
// ySpeed = vY1;
// kugel.xSpeed = vX2;
// kugel.ySpeed = vY2;
}

/**
* Hier wird überprüft, ob eine Kugel gegen eine Wand fliegt
*/
private void kolisionScreen() {
farbe = Color.YELLOW;
// System.out.println("1 yspeed: " + ySpeed);
if (x + durchmesser / 2 >= screen.getSize().width && xSpeed > 0) {
xSpeed *= -1;
} else if (x - durchmesser / 2 <= 0 && xSpeed < 0) {
xSpeed *= -1;
}

if (y + durchmesser / 2 >= screen.getSize().height && ySpeed > 0) {
ySpeed *= -1;
} else if (y - durchmesser / 2 <= 0 && ySpeed < 0) {
ySpeed *= -1;
}

}
}
[/Java]
Ich hab keine Idee mehr.
 
Zuletzt bearbeitet:
G

Gast2

Gast
statt
Code:
g.drawoval
einfach
Code:
g.drawimage
nehmen ???:L
 

headset

Mitglied
Ja, aber ich bekomme das mit dem Pfad angeben nicht
[Java]
private Image kugel = new Image(null, getClass().getResourceAsStream("bilder/kugel.png"));
[/Java]
die Klasse liegt in src/grafik
und die Grafik in src/bilder
 
S

SlaterB

Gast
mit ../ kann man in ein höhere Verzeichnis wechseln,


dein ganzer Code ist irrelevant, es geht nur um das Laden des Bildes?
 

headset

Mitglied
und wo fang ich an?
Auf meiner Festplatte: C:\Users\Elias\workspace\Kugel\src\bilder\kugeln.png
oder
/Kugel/src/bilder/kugeln.png???
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Grafik auf einem JPanel erneut darstellen Java Basics - Anfänger-Themen 3
C Grafik in einem Panel als Bild exportieren Java Basics - Anfänger-Themen 8
fragenÜber(fragen); Turtle Grafik mit GUI (JFrame) Java Basics - Anfänger-Themen 3
D Grafik auf ein JPane ausgeben. Java Basics - Anfänger-Themen 6
J Konstruktoren und Grafik Java Basics - Anfänger-Themen 3
J "Tetris" - Problem bei der Grafik Java Basics - Anfänger-Themen 5
R Grafik in CSV einbinden Java Basics - Anfänger-Themen 2
S Suche aktuelles 2D Grafik Tutorial Java Basics - Anfänger-Themen 5
B Java -Turtle Grafik - kennt sich jemand damit aus? Java Basics - Anfänger-Themen 1
S Erste Schritte 2D Grafik Probleme mit KeyListener. Java Basics - Anfänger-Themen 18
D aufbauende Grafik Java Basics - Anfänger-Themen 13
8 Grafik erstellen Java Basics - Anfänger-Themen 6
Z Jump and Run - Grafik,Logik und GUI trennen Java Basics - Anfänger-Themen 4
G Bei Mouseover Grafik ändern, gutes Vorgehen gesucht Java Basics - Anfänger-Themen 0
V jab ich eclipse verrückt gemacht :D ? array Jpanel, Jlabel Grafik Fehler / Frage Java Basics - Anfänger-Themen 5
L Grafik Kollision Detektierung Java Basics - Anfänger-Themen 4
L OOP Grafik in Circle Objekt füllen Java Basics - Anfänger-Themen 3
S Grafik löschen Java Basics - Anfänger-Themen 10
C Grafik einsperren Java Basics - Anfänger-Themen 2
E Quelltext für Grafik verschwindet Java Basics - Anfänger-Themen 9
S Grafik verschwindet Java Basics - Anfänger-Themen 8
O Java Grafik-Programmierung? Java Basics - Anfänger-Themen 16
R 2D Grafik zeichnen Java Basics - Anfänger-Themen 4
B Grafik zeichnen Java Basics - Anfänger-Themen 25
S Teilstücke aus einer Grafik extrahieren Java Basics - Anfänger-Themen 2
Maxim6394 Grafik rotieren Java Basics - Anfänger-Themen 11
S Probleme mit JMenü und Grafik Java Basics - Anfänger-Themen 2
0 Grafik eine bestimmte Strecke laufen lassen Java Basics - Anfänger-Themen 6
R Hilfe bei erster Grafik Java Basics - Anfänger-Themen 2
A Gui Grafik Java Basics - Anfänger-Themen 4
maddin86 Grafik in .jar einbetten Java Basics - Anfänger-Themen 3
M import einer Grafik aus .jar funktioniert nicht Java Basics - Anfänger-Themen 6
M Grafik export in ein Jar File Java Basics - Anfänger-Themen 5
O Grafik in Frame laden Java Basics - Anfänger-Themen 9
H Diverse Dinge: Unstabile Grafik, Druckt Grafik nicht,Tooltipp verschwindet hinter Grafik Java Basics - Anfänger-Themen 3
F JLabel mit Grafik füllen Java Basics - Anfänger-Themen 3
K Grafik vergrößern/verkleinern Java Basics - Anfänger-Themen 3
F Zugriffsproblem - Funktion von Grafik trennen Java Basics - Anfänger-Themen 6
H HtmlUnit - Grafik speichern Java Basics - Anfänger-Themen 2
R Taste gedrückt = Grafik zeichen ?!? Java Basics - Anfänger-Themen 8
D PNG-Grafik erzeugen Java Basics - Anfänger-Themen 8
A Grafik erstellen und in Frame einfügen Java Basics - Anfänger-Themen 17
T Drucken von Listen bestehend aus Grafik und Text (unter swing) Java Basics - Anfänger-Themen 7
A grafik 2d Objekte mit der Maus bewegen Java Basics - Anfänger-Themen 4
A Grafik 2d Objekte farblich ausfüllen Java Basics - Anfänger-Themen 15
C Grafik einbinden Java Basics - Anfänger-Themen 11
F Größe von Grafik-Containern verschieben Java Basics - Anfänger-Themen 2
J Unterschied zwischen 2 Grafik Methoden Java Basics - Anfänger-Themen 2
M Grafik neuzeichnen Java Basics - Anfänger-Themen 8
M Grafik als Resource laden? Java Basics - Anfänger-Themen 2
G erste Schritte in Fenster und Grafik-Programmierung Java Basics - Anfänger-Themen 2
$ Inhalt von JPanel als Grafik? Java Basics - Anfänger-Themen 2
K Grafik beim JFrame oben Links ändern nur wie ? Java Basics - Anfänger-Themen 8
J Grafik Java Basics - Anfänger-Themen 3
K Grafik abspeichern, X11 Fehlermeldung Java Basics - Anfänger-Themen 15
T Zeigerposition auf Grafik messen? Java Basics - Anfänger-Themen 5
M ausm String eine Grafik erstellen Java Basics - Anfänger-Themen 4
F Grafik auf Button passt nicht Java Basics - Anfänger-Themen 1
E Grafik in bestimmtes frame einbinden . Java Basics - Anfänger-Themen 13
F Teilen einer großen Grafik Java Basics - Anfänger-Themen 2
M Grafik erstellen Java Basics - Anfänger-Themen 8
C Clear im Grafik Editor Java Basics - Anfänger-Themen 16
C Grafik flimmert bzw. flackert bei Bewegung Java Basics - Anfänger-Themen 11
N Grafik formatieren Java Basics - Anfänger-Themen 7
E fehlermeldung bei rekursiver grafik Java Basics - Anfänger-Themen 11
M wie kombiniere ich grafik und swing-komponenten Java Basics - Anfänger-Themen 16
N Java Problem bei Grafik und OoP Java Basics - Anfänger-Themen 7
V Grafik ist nur ganz kurz sichtbar Java Basics - Anfänger-Themen 3
H Streichholzziehen - Grafik? Java Basics - Anfänger-Themen 3
S Grafik verschwindet aus JTabbedPane Java Basics - Anfänger-Themen 4
K Mehrere Werte in einem Switch Case parallel überprüfen Java Basics - Anfänger-Themen 23
Zrebna Fragen zu einem Klassendiagramm Java Basics - Anfänger-Themen 8
S HashMap mehrere Keys zu einem Value Java Basics - Anfänger-Themen 3
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
F 2x 16bit Werte zu einem 32bit und dann splitten mit 0xb Java Basics - Anfänger-Themen 1
J JSON mit einem JPanel Java Basics - Anfänger-Themen 3
F Einem GIT repository ein Projekt hinzufügen Java Basics - Anfänger-Themen 1
J Frage zu einem "Taschenrechner" code Java Basics - Anfänger-Themen 9
I Klassen von einem package laden, Statisches Feld auslesen und Objekt erstellen Java Basics - Anfänger-Themen 8
J Schlüsselworte Prüfen, ob ein bestimmtes, ganzes Wort in einem String enthalten ist. Java Basics - Anfänger-Themen 6
P Probleme mit NetBeans: Wie lässt sich jar. Datei an einem MacBook öffnen Java Basics - Anfänger-Themen 21
J Auf einem JLabel Linien Malen Java Basics - Anfänger-Themen 1
I @Entity Klassen, Service Beans etc. aus einem Share Projekt beziehen? Java Basics - Anfänger-Themen 26
R Images aus einem Array ausgeben Java Basics - Anfänger-Themen 3
XWing Randomizer mit einem String Java Basics - Anfänger-Themen 2
D OOP Array einem Objekt zuweisen Java Basics - Anfänger-Themen 2
O Zahlen aus einem char-array per char + Zeichen addieren Java Basics - Anfänger-Themen 2
S Bestimmte werte aus einem Array löschen Java Basics - Anfänger-Themen 2
S Ausgeben wie oft ein Wert in einem Array vorkommt Java Basics - Anfänger-Themen 7
N Einzelne Werte aus einem TreeSet auslesen Java Basics - Anfänger-Themen 2
N Welche Objekte kann man zu einem Set hinzufügen Java Basics - Anfänger-Themen 4
Kumora ArrayIndexOutOfBoundsException bei einem Sortierverfahren Java Basics - Anfänger-Themen 2
I Viereck / Rechteck Prüfung innerhalb einem bestimmten Bereich Java Basics - Anfänger-Themen 2
Distanz zwischen zwei Zeichenfolgen in einem String bestimmen Java Basics - Anfänger-Themen 5
Substring in einem String finden Java Basics - Anfänger-Themen 13
J Fehlerbehandlung an einem Beispiel Java Basics - Anfänger-Themen 8
I ResultSet aus meiner SQL-Abfrage in einem JTextfield ausgeben. Java Basics - Anfänger-Themen 1
I Innerhalb einem Bild ein Teil austauschen Java Basics - Anfänger-Themen 26
I Dateigröße von einem InputStream oder byte[] bekommen Java Basics - Anfänger-Themen 2
H Compiler-Fehler Klasse in einem Package wird nicht gefunden bzw. akzeptiert Java Basics - Anfänger-Themen 12

Ähnliche Java Themen

Neue Themen


Oben